Qт - текст кнопкой QPushButton форматирования
У меня есть QPushButton, и на этом у меня есть текст и значок. Я хочу, чтобы текст на кнопке был жирным и красным. Посмотрел на другие форумы, погуглил и потерял надежду. Кажется, нет способа сделать это, если кнопка имеет значок (конечно, если вы не создаете новый значок, который является текстом+бывший значок). Это единственный способ? У кого-нибудь есть идея получше?
3 ответов
вам действительно не нужно подкласс, чтобы изменить форматирование вашей кнопки, а использовать таблицы стилей, например
QPushButton {
font-size: 18pt;
font-weight: bold;
color: #ff0000;
}
применение этого к кнопке, которую вы хотите изменить, сделает текст кнопок 18pt, полужирным и красным. Вы можете подать заявку через widget->setStyleSheet()
применение этого к виджету в иерархии выше будет стиль все кнопки под,таблица стилей QT механизм очень гибкий и довольно хорошо документирован.
Вы можете установить таблицы стилей в дизайнере тоже, это будет стиль виджета, который вы редактируете немедленно
вы делаете подкласс "QPushbutton" , а затем переопределяете событие paint, там вы изменяете текст по своему желанию.
вот это
class button : public QPushButton
{
Q_OBJECT
public:
button(QWidget *parent = 0)
{
}
~button()
{
}
void paintEvent(QPaintEvent *p2)
{
QPushButton::paintEvent(p2);
QPainter paint(this);
paint.save();
QFont sub(QApplication::font());
sub.setPointSize(sub.pointSize() + 7);
paint.setFont(sub);
paint.drawText(QPoint(300,300),"Hi");
paint.restore();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
button b1;
b1.showMaximized();
return a.exec();
}
вы можете подкласс QLabel и полностью выбросить все его события мыши (так что они достигают родителя). Затем обрешетка QPushButton, установить макет на нем и в этом макете вставить QLabel с форматированным текстом. Вы получаете кнопку, которая содержит QLabel и является кликабельной. (Любой виджет Qt может иметь набор макетов, включая те, которые вы никогда не ожидали, что они могут.)