2013-02-14 68 views
5

我是一名正在开发使用Qt4工作应用程序的学生程序员。我正在建立一个公式编辑器,并且在试图突出显示我的QTextEdit字段中的字符串时遇到问题。我有一个函数可以解析QTextEdit字符串,并返回错误所在位置的开始和结束整数。我原来的策略是在这两点使用HTML标签来突出显示错误。不幸的是,html标签和公式语法似乎存在问题。如何突出显示QTextEdit中的文本字符串

我认为我需要的是一种策略,它依靠Qt的库来设置这两个索引之间的背景色。我开始寻找一个QSyntaxHighlighter;然而我认为这更多的是突出使用一组预定义的规则,而不是仅仅攫取& b和设置背景颜色之间的任何东西。如果我可以使用语法荧光笔,请提供给我和示例或参考,因为我已经阅读了文档并没有找到任何内容。

感谢您提前提供任何帮助!

P.S.只是为了强调html兼容性问题;由于使用多个<和>符号,html变得有问题。

回答

10

您可以使用QTextCursorQTextCharFormat它:

QTextEdit *edit = new QTextEdit; 
... 
int begin = ... 
int end = ... 
... 

QTextCharFormat fmt; 
fmt.setBackground(Qt::yellow); 

QTextCursor cursor(edit->document()); 
cursor.setPosition(begin, QTextCursor::MoveAnchor); 
cursor.setPosition(end, QTextCursor::KeepAnchor); 
cursor.setCharFormat(fmt); 
+0

这是我最终结束了转向..这个答案的问题是,它似乎我不能设置文本返回到默认的颜色之后。我最终做的是抓取背景颜色变化,并将我特定的容易出错的方程式段设置为所选文本,直到鼠标单击到某个位置。显然,我不强调红色的问题,但是这个解决方案做了我所需要的;突出显示我需要的更直观的方程式检查方法。 – 2013-02-19 22:48:23

+0

与您可以设置默认背景颜色的方式相同。你只需要保存你之前选择的文本位置。 – hank 2013-02-20 06:44:50

+0

不幸的是,由于依赖从文本编辑字段发出的触发,所以这是不可行的。一旦用户点击回到框中,我希望突出显示消失。每次发出此信号时都会重置光标,导致用户失去右键单击和选择文本的能力。它可以,如果你不知道的方式;我只是想我会问。 – 2013-02-21 10:31:04