基本上,我想要一个带有彩色文本的简单pushButton,当按下它时会退出应用程序。
为什么我不能在这个简单的程序中按下PushButton。我在Arch x86_64上使用QT 4.6。
#include <QtGui/QApplication>
#include <QLabel>
#include <QPushButton>
#include<QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow *Main=new QMainWindow;
QPushButton *button = new QPushButton(Main);
QLabel *label = new QLabel(Main);
label->setText("<h2><i>Hello</i> ""<font color=red>Qt!</font></h2>");
label->setVisible(true);
QObject::connect(button, SIGNAL(clicked()),label, SLOT(close()));
label->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);
label->setWindowTitle("HelloWorld Test Program");
Main->show();
return a.exec();
}
答案 0 :(得分:3)
除了使用允许您显示富文本的按钮类之外,还需要确保连接正确。
在您的示例中,您将按钮的clicked
信号连接到标签的clear()
插槽,这是无意义的。
要在单击按钮时退出应用程序,您需要关闭主窗口。以下是获得正确连接的代码:
QObject::connect(button, SIGNAL(clicked()),Main, SLOT(close()));
在您的示例中更改此单行代码是不够的,因为您的标签是在按钮顶部绘制的,因此无法以图形方式单击它。您需要隐藏标签并在按钮中添加一些文字:
button->setText("Hello");
label->setVisible(false);
关于QPushButton
中的富文本功能,AFAIK无法使用QPushButton
进行此操作。
更新:
这是一种在QPushButton
上放置一些richtext的方法。它使用我的评论描述的解决方案:将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();
}
答案 1 :(得分:1)
看看here。小部件名为 QwwRichTextButton 。
QwwRichTextButton 小部件提供了一个可以显示富文本的按钮。