Рисование текста 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),

Другие вопросы по тегам