You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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(); // 转义后变为"&lt;b&gt;Hello&lt;/b&gt;"
QMessageBox::information(this, "info", escapedText);

这样弹窗里就会显示<b>Hello</b>而不是加粗的文字了。


内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:58:09