在QString中编写HTML代码

时间:2015-10-14 08:49:00

标签: html qt qstring

我正在使用QT Creator,我想将HTML代码写入QString或使用setHtml()设置textEdit。问题是,我无法真正逃脱HTML代码附带的特殊字符,例如: :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-    html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'.Lucida Grande UI'; font-size:13pt;     font-weight:400; font-style:normal;">

如何将这样的内容写入QString或直接将其设置为textEdit?

我需要这个,因为我的HTML文字可能会改变。

2 个答案:

答案 0 :(得分:3)

这是一个简单的方法! 如果您使用的是Qt5,请使用

QString::toHtmlEscaped()

示例(来自here):

QString plain = "#include <QtCore>";
QString html = plain.toHtmlEscaped();
// html == "#include &lt;QtCore&gt;"

如果您使用的是Qt4:

Qt::escape

示例:

QString plain = "#include <QtCore>";
Qstring html = Qt::escape(plain);

答案 1 :(得分:1)

您只是想知道如何转义C字符串。您需要使用在线工具(如http://www.digitalcoding.com/tools/addslashes-stripslashes.html)或命令行工具(如echo '<!DOCTYPE HTML PUBLIC...' | sed -e 's-"-\"-g' > escaped.c)或任何文本编辑器的替换功能 - 例如NotePad ++。

使用这样的工具,您的字符串变为:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-    html40/strict.dtd\">rn<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">rnp, li { white-space: pre-wrap; }rn</style></head><body style=\" font-family:\'.Lucida Grande UI\'; font-size:13pt;     font-weight:400; font-style:normal;\">

只需在开头和结尾添加双引号即可:

auto foo = QStringLiteral("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-    html40/strict.dtd\">rn<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">rnp, li { white-space: pre-wrap; }rn</style></head><body style=\" font-family:\'.Lucida Grande UI\'; font-size:13pt;     font-weight:400; font-style:normal;\">");