Помимо использования класса кнопок, который позволит вам отображать форматированный текст, вам также необходимо убедиться, что ваши соединения правильные.
В вашем примере вы подключаете сигнал clicked
кнопки к слоту clear()
метки, что не имеет смысла.
Чтобы выйти из приложения при нажатии кнопки, необходимо закрыть главное окно. Вот код для получения правильного соединения:
QObject::connect(button, SIGNAL(clicked()),Main, SLOT(close()));
Изменение этой отдельной строки кода в вашем примере недостаточно, потому что ваша метка нарисована поверх вашей кнопки, поэтому невозможно щелкнуть по ней графически. Вам нужно спрятать свой ярлык и вставить текст в кнопку:
button->setText("Hello");
label->setVisible(false);
Что касается функции расширенного текста в QPushButton
, AFAIK, это невозможно сделать с QPushButton
.
ОБНОВЛЕНИЕ:
Вот способ поместить некоторый richtext в QPushButton
. Он использует решение, описанное в моем комментарии: рисование QTextDocument на растровое изображение и установка этого растрового изображения в качестве значка кнопки.
#include <QtGui/QApplication>
#include <QLabel>
#include <QPushButton>
#include <QtGui>
#include <QTextDocument>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow *Main=new QMainWindow;
QPushButton *button = new QPushButton(Main);
QTextDocument Text;
Text.setHtml("<h2><i>Hello</i> ""<font color=red>Qt!</font></h2>");
QPixmap pixmap(Text.size().width(), Text.size().height());
pixmap.fill( Qt::transparent );
QPainter painter( &pixmap );
Text.drawContents(&painter, pixmap.rect());
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
QObject::connect(button, SIGNAL(clicked()),Main, SLOT(close()));
Main->show();
return a.exec();
}