一个带有Qt的GUI的“关于”消息框

6
    QMessageBox::about( this, "About Application",
    "<h4>Application is a one-paragraph blurb</h4>\n\n"
"Copyright 1991-2003 Such-and-such. "
"For technical support, call 1234-56789 or see\n"
"<a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>" );

这段代码创建了一个关于信息框,但我想有两个例外:
1)我想用aaa.png文件更改信息框中的图标。
2)我希望链接可点击。它看起来像超链接(是蓝色和下划线),但鼠标单击无效。
有什么想法吗?
6个回答

1

对于图标,您只需要设置应用程序图标。就像这样:

QApplication::setWindowIcon(QIcon(":/aaa.png")); // from a resource file

至于使链接可点击,我认为不能直接使用QMessageBox::about API实现。


好的,也许你能告诉我,通常我们如何创建一个带有超链接文本的小部件? - Narek

1
QMessageBox msgBox;
msgBox.setTextFormat(Qt::RichText); // this does the magic trick and allows you to click the link
msgBox.setText("Text<br /><a href=\"http://www.such-and-such.com\">http://www.such-and-such.com</a>");
msgBox.setIcon(yourIcon);
msgBox.exec();

1

供参考,文档说明textFormat的默认类型是Qt::AutoText。文档进一步指出,如果Qt::mightBeRichText()返回true,则Qt::AutoText将被解释为Qt::RichText;否则将被解释为Qt::PlainText。最后,mightBeRichText使用快速和简单的启发式算法。它主要检查第一个换行符之前是否有类似标签的内容。因此,由于您的第一行没有标签,它会假定它是纯文本。使用msgBox.setTextFormat(Qt::RichText);明确设置为RichText以使其相应地操作。


1

我认为你应该为你的关于小部件创建一个自定义的QWidget。这样,你可以把所有你想要的东西都放在小部件上。例如,你可以使用openExternalLinks属性放置可点击的链接QLabel

如果想在QWidget上显示自定义图像,这个示例可能会有所帮助。



-1

main.cpp

QApplication app(argc, argv);
app.setWindowIcon(QIcon(":/images/your_icon.png"));

mainwindow.cpp(如果您有一个的话)放入您的插槽中

void MainWindow::on_aboutAction_triggered()
{
    QMessageBox::about(0, "window title", "<a href='http://www.jeffersonpalheta.com'>jeffersonpalheta.com</a>");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接