我正在使用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文字可能会改变。
答案 0 :(得分:3)
这是一个简单的方法! 如果您使用的是Qt5,请使用
QString::toHtmlEscaped()
示例(来自here):
QString plain = "#include <QtCore>";
QString html = plain.toHtmlEscaped();
// html == "#include <QtCore>"
如果您使用的是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;\">");