我一直在使用QMessageBox
来显示统计测试的结果。这很好,因为我可以将摘要结果放在信息性文本中,然后将详细文本中的完整结果放入其中。问题是,完整的结果是一个表格,所以我希望它是等宽的,以使它看起来正确,QMessageBox
在详细的文本区域中不使用等宽字体。
因此,我正在查看子类化QMessageBox
或子类化QDialog
以创建看起来像QMessageBox
但在详细文本区域中使用等宽字体的内容。我此刻有点生疏,并且很难搞清楚哪个是更好的选择。我可以继承QMessageBox
,只需添加我自己的QTextEdit
和我自己的"显示详细的文字"按钮,并保持QMessageBox
详细的文本区域和按钮隐藏?或者有更简单的方法吗?
答案 0 :(得分:3)
您可以在QMessageBox的字段中使用html文本,这是最简单的方法。作为提示,请尝试
<pre>Test</pre>
在你的QString中。
但是,消息框的任何其他自定义都可能意味着一个子类。
答案 1 :(得分:1)
我没有找到比这更好的事情:
setStyleSheet("QTextEdit { font-family: monospace; }");
有点hacky因为(1)它使用样式表,这可能与你的小部件样式的方式冲突,(2)它依赖于详细文本在QTextEdit
中的事实,并且是唯一的这样的元素,API没有正式确保。但它的确有效。 :d
答案 2 :(得分:1)
这是一个基于SQLAlchemy IN clause的答案的有效示例:
session.query(MyUserClass)
.filter(MyUserClass.id.in_(SOME_LIST)).all()
答案 3 :(得分:0)
您可以使用此 hack 在 QMessageBox 的 detailText 中使用 html 文本:
QString html_formatted_text;
QMessageBox mb;
mb.setDetailedText(html_formatted_text);
// Find detailed text widget
auto te = mb.findChild<QTextEdit*>();
if (te) {
te->setHtml(mb.detailedText());
}
mb.exec();