C++ 如何突出显示QTextEdit中的文本字符串

C++ 如何突出显示QTextEdit中的文本字符串,c++,qt,stylesheet,qstring,qtextedit,C++,Qt,Stylesheet,Qstring,Qtextedit,我是一名学生程序员,目前正在使用Qt4开发工作应用程序。我正在构建一个等式编辑器,在试图突出显示字段中的字符串时遇到问题。我有一个函数,它解析QTextEdit字符串并返回错误所在位置的起始和结束整数。我最初的策略是在这两点使用HTML标记来突出显示错误。不幸的是,html标记和公式语法似乎存在问题 我认为我需要的是一种依靠Qt库在这两个索引之间设置背景色的策略。我开始看一眼;然而,我认为这更适合于使用一组预定义的规则进行高亮显示,而不仅仅是在a&b和设置背景色之间获取任何内容。如果我能使用语法

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

我认为我需要的是一种依靠Qt库在这两个索引之间设置背景色的策略。我开始看一眼;然而,我认为这更适合于使用一组预定义的规则进行高亮显示,而不仅仅是在a&b和设置背景色之间获取任何内容。如果我能使用语法荧光笔,请提供我和例子或参考,因为我已经阅读了文档,没有发现任何东西

提前谢谢你的帮助


强调html兼容性问题;由于使用了多个<和>符号,html变得有问题

您可以使用
QTextCursor
QTextCharFormat
对其进行操作:

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);

这就是我最终转向的。。这个答案的问题是,我似乎无法在之后将文本设置回默认颜色。我最后做的是抓取背景颜色的变化,并将我的易出错公式的特定部分设置为简单的选定文本,直到鼠标单击其他位置。我没有明显地用红色强调问题,但是这个解决方案满足了我的需要;突出显示我需要的文本,以获得更直观的公式检查方法。同样,您可以设置默认背景色。您只需要保存以前选择的文本位置。不幸的是,由于依赖于文本编辑字段发出的触发器,这是不可行的。一旦用户点击回到框中,我希望高亮显示消失。每次发出此信号时重置光标会导致用户失去右键单击并选择文本的能力。如果你不知道怎么做也没关系;我只是想问问。谢谢你,汉克!我发现,要保留任何现有的文本格式,如字体大小、斜体等,您可以获得当前的格式,而不是创建一个全新的格式。QTextCharFormat fmt=cursor.charFormat();fmt.立根点(Qt::黄色);cursor.setCharFormat(fmt);使用正则表达式搜索时如何计算结束?