2014-10-06 39 views
1

我有一個停靠的QTextEdit,我正在使用它來模擬QT C++ gui中的調試終端,並將它設置爲帶有白色文本的黑色背景。插入到QTextEdit中的HTML不符合樣式表

我想用它來從QXmlSchemaValidator打印出錯誤消息,但是從架構驗證的消息以HTML格式,每當我將它們插入到QTextEdit,它會恢復到它的默認字體,我結束了與在黑背景的黑文本。

實際的消息是這樣的:

<html xmlns='http://www.w3.org/1999/xhtml/'> 
    <body> 
     <p>Content of element 
      <span class='XQuery-keyword'>minValue</span> does not match its type definition: <span class='XQuery-data'>fu</span> is not valid according to <span class='XQuery-type'>xs:decimal</span>.. 
     </p> 
</body> 
</html> 

使用setAcceptRichText(false)沒有解決不了的問題,如果我用insertPlainText()添加文本到lineEdit,它會刪除所有的換行和離開html標籤在錯誤信息中,這是不可接受的。

有什麼方法可以顯示HTML富文本,但不會吹走我的樣式表字體?

+0

添加一些HTML代碼到你的信息做你的文白(字體顏色,BASEFONT標記在這種情況下最好的,但我不相信Qt的支持的話)或者這是不是對你很好的解決方案? – Chernobyl 2014-10-06 19:54:08

+0

我實際上沒有寫html消息,它是QAbstractMessageHandler類的輸出。我真的*不希望解析html來插入標籤,除非必須。 – 2014-10-06 19:57:39

+0

好的,然後嘗試下一件事:(我不測試它):在你設置你的html調用selectAll();並在此之後調用setTextColor(Qt :: White);它工作嗎? – Chernobyl 2014-10-06 20:05:44

回答

0

這是不大不小的雜牌組裝電腦的,但我去的解決方法是將它添加到文本編輯之前,請從架構驗證消息的HTML標記。

QString errorMsg = msg.statusMessage().remove(QRegExp("<[^>]*>")); 
textEdit->setText(errorMsg); 
0

我在我的電腦上測試過它。它完美的作品。使用此:

edit->setHtml(htmlDescription); 
edit->selectAll(); 
edit->setTextColor(Qt::green); 

//Ok, but clear selection 
QTextCursor cur = edit->textCursor(); 
cur.clearSelection(); 
edit->setTextCursor(cur); 
+0

唯一的問題是顏色/背景必須從樣式表中設置,而不是編程,所以它不會在我的情況下工作,但這是一個漂亮的技巧。 – 2014-10-07 11:56:19