2013-06-04 127 views
2

用戶將能夠將某些文本放入Qt環境中的QLineEdit中。但是,這些輸入文本可以包含HTML特殊字符。我的目標是通過用替代品替換所有HTML特殊字符出現來轉換此文本。將QString轉換爲替代HTML特殊字符(例如標籤)的文本

在PHP中使用htmlspecialchars()函數http://php.net/manual/en/function.htmlspecialchars.php發現了一個類似的情況。

我想這樣做的主要原因是因爲我想在richtext QTextEdit中顯示用戶輸入,我不希望用戶能夠更改HTML,我希望能夠使用HTML特殊字符沒有太多麻煩。

這是如何實現的?

回答

1

我所知道的最簡單的方法,就是用QTextEdit::toHtml

QString convert(); 
{ 
    QString s = lineEdit->text(); 
    QTextEdit textEdit; 
    textEdit.setPlainText(s); 
    QString ret = textEdit.toHtml(); 
    int firstClosingTag = ret.indexOf("</p></body></html>"); 
    int lastOpeningTag = ret.lastIndexOf(">", firstClosingTag); 
    return ret.mid(lastOpeningTag + 1, firstClosingTag - lastOpeningTag - 1); 
} 

還有兩個功能,你會發現有用:

Qt::convertFromPlainText()Qt::escape()

+0

您的解決方案是行不通的。 QString仍然包含標籤,而它應該替換html特殊字符,例如每個<發生應該被替換爲<。 – Bear

+0

好的,我明白這個問題是錯的,這裏是新的解決方案。 – Amartel

+0

Qt :: escape將解決我認爲的問題。謝謝! – Bear

相關問題