插入QTextEdit的HTML不符合样式表

时间:2014-10-06 19:36:36

标签: c++ qt

我有一个停靠的QTextEdit,我用它来模拟QT c ++ gui中的调试终端,并将其设置为带有白色文本的黑色背景。

我正在尝试使用它来打印来自QXmlSchemaValidator的错误消息,但来自架构验证程序的消息是html格式的,每当我将它们插入QTextEdit时,它都会恢复为它#39;是默认字体,我最终在黑色背景上显示黑色文字。

实际消息如下:

    <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富文本,但不会吹掉我的样式表字体?

2 个答案:

答案 0 :(得分:0)

我在电脑上测试了它。它完美地运作。使用此:

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

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

答案 1 :(得分:0)

这是一种kludge,但我采用的解决方法是在将模式添加到文本编辑之前从模式验证器消息中删除HTML标记。

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