我想设置QMessageBox文本格式,但是找不到有效的方法。
QtGui.QMessageBox.information(
self,
"Confirm delete!",
"Are you sure you want to delete file?\n %s" % filename,
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.No
)
我想用粗体表示,例如:
"Are you sure you want to delete file?\n <b>%s</b>"
我该怎么做?
答案 0 :(得分:0)
根据PySide的文档,您可以使用setTextFormat
指定Qt.RichText
格式。
但是,仅当您创建自定义QMessageBox
实例然后进行设置时,此方法才有效,而在使用QMessageBox.information
静态方法时,它将不起作用。
默认情况下,QMessageBox
使用Qt.AutoText
格式,该格式试图通过使用Qt.mightBeRichText
函数来检测文本是否为富文本(我只能找到Qt的文档)。该函数的文档说明:
如果字符串文本可能是富文本,则返回true;否则,返回true。除此以外 返回false。
此函数使用快速且因此简单的启发式方法。 主要 检查在之前是否有看起来像标签的东西 首先换行。尽管在某些情况下结果可能是正确的, 没有保证。
不幸的是,在您的消息中,您在任何标记之前都\n
之前是换行符,因此该功能无法将您的消息检测为富文本。
无论如何,一旦您将文本解释为富文本格式,就必须使用HTML换行符<br>
,因此请使用以下消息:
"Are you sure you want to delete file?<br> <b>%s</b>"
将使QMessageBox
自动检测RTF文本并产生所需的结果。