如何在QMessageBox中显示纯文本及原HTML代码内容?
QMessageBox 相关问题解答
1. 如何使用QMessageBox显示纯文本?
其实QMessageBox默认就支持纯文本显示,只要你的内容里没有包含可被解析的HTML标签,直接调用静态方法就能轻松实现:
QMessageBox::information(this, "纯文本弹窗", "这是一段没有任何格式的纯文本内容~");
如果你的文本里不小心混了HTML标签,但还是想让它原样显示(比如<b>这样的标签</b>),可以明确设置文本格式为纯文本,用非静态的弹窗对象来实现:
QMessageBox msgBox; msgBox.setWindowTitle("纯文本示例"); msgBox.setText("这里的<b>标签</b>会原封不动显示哦"); msgBox.setTextFormat(Qt::PlainText); // 强制开启纯文本模式 msgBox.exec();
2. 如何让HTML标签原样显示而不是被解析?
你现在遇到的问题是QMessageBox自动把HTML标签解析成了富文本格式(比如<b>Hello</b>变成了加粗的Hello)。要让标签原样显示,有两种常用方法:
方法一:强制设置纯文本格式
和上面的思路一致,把弹窗的文本格式改成Qt::PlainText,这样所有内容都会按纯文本渲染,不会解析任何HTML:
QString text = "<b>Hello</b>"; QMessageBox msgBox; msgBox.setWindowTitle("info"); msgBox.setText(text); msgBox.setTextFormat(Qt::PlainText); msgBox.exec();
方法二:转义HTML特殊字符
如果你还是想保留QMessageBox的富文本解析能力,但只是想把特定的标签转义成可显示的字符,可以用QString::toHtmlEscaped()方法自动转义<、>、&这些特殊字符:
QString originalText = "<b>Hello</b>"; QString escapedText = originalText.toHtmlEscaped(); // 转义后变为"<b>Hello</b>" QMessageBox::information(this, "info", escapedText);
这样弹窗里就会显示<b>Hello</b>而不是加粗的文字了。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

