【问题标题】:How to highlight a string of text within a QTextEdit如何突出显示 QTextEdit 中的一串文本
【发布时间】:2013-02-14 22:46:49
【问题描述】:

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

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

提前感谢您的帮助!

附:只是为了强调html兼容性问题;由于使用了多个 符号,因此 html 变得有问题。

【问题讨论】:

    标签: c++ qt stylesheet qstring qtextedit


    【解决方案1】:

    您可以使用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);
    

    【讨论】:

    • 这就是我最终转向的内容。这个答案的问题是,我之后似乎无法将文本设置回默认颜色。我最终做的是改变背景颜色并将我的易出错方程的特定部分设置为简单的选定文本,直到鼠标单击到某个位置。我没有明显地用红色突出问题,但是这个解决方案做了我需要的;突出显示我需要更直观的方程式检查方法的文本。
    • 设置默认背景颜色的方法相同。您只需要保存之前选择的文本位置即可。
    • 不幸的是,由于依赖于从文本编辑字段发出的触发器,这不可行。一旦用户点击回该框,我希望突出显示消失。每次发出此信号时重置光标会导致用户失去右键单击和选择文本的能力。如果你不知道怎么做也没关系;我只是想我会问。
    • 谢谢汉克!我发现要保留任何现有的文本格式,如字体大小、斜体等,您可以获得当前格式,而不是创建一个全新的格式。 QTextCharFormat fmt = cursor.charFormat(); fmt.setBackground(Qt::yellow); cursor.setCharFormat(fmt);
    • 用正则表达式搜索时如何计算结尾?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2019-09-13
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多