Рисование текста QPushButton с кнопки
Я создаю пользовательский QPushButton. Если у кнопки есть значок, я хочу, чтобы значок находился в центре кнопки. Если у кнопки есть текст, я хочу, чтобы текст центрировался на кнопке. Я могу справиться с обоими этими случаями. Если кнопка содержит значок и текст, я хочу, чтобы значок центрировался, а текст был нарисован под кнопкой вне прямоугольника кнопки. Я рисую изображение кнопки, используя border-image в таблице стилей.
Внутри MyPushButton::paintEvent() я вычисляю прямоугольник и рисую значок, используя:
style()->drawItemPixmap(&p, iconRect, Qt::AlignLeft | Qt::AlignVCenter,
this->icon().pixmap(iconRect.size()));
Затем я вычисляю текстовый прямоугольник под кнопкой и делаю это:
style()->drawItemText(&p, textRect, Qt::AlignCenter, (this->palette()),
true, this->text(), QPalette::ButtonText );
но текст не виден.
Я думаю, что это должно быть как-то связано с обозначенной "нарисованной" областью, но я не могу понять, как расширить эту область, чтобы изображение кнопки не заполняло область, в которой я хочу разместить текст.
Я могу сделать это с перегрузкой QStyle::drawControl(), но я не уверен почему. Когда я прослеживаю код в случае CE_PushButtonLabel, прямоугольник myStyle-> уже был изменен, чтобы быть достаточно большим, чтобы соответствовать изображению кнопки и тексту.
1 ответ
Похоже, работа для QToolButton
вместе с setToolButtonStyle(Qt::ToolButtonTextUnderIcon)
,