首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加带有QSyntaxHighlighter和QTextCharFormat的QTextCharFormat

添加带有QSyntaxHighlighter和QTextCharFormat的QTextCharFormat
EN

Stack Overflow用户
提问于 2019-12-03 18:46:18
回答 1查看 174关注 0票数 1

我正在尝试在Qt中创建一个小语法高亮符,并且我想显示一个工具提示,说明当用户挂起错误时的错误描述。

(我是QSyntaxHighlighter的子类)

我尝试过QTextCharFormat::setToolTip函数,但它没有起作用:/文本如预期一样带有红色下划线,但当我悬停在它上时,没有显示任何工具提示。

我错过了什么吗?还是我应该用另一种方法?

代码语言:javascript
复制
void CodeHighlighter::highlightBlock(const QString &text)
{
    _errorFormat.setProperty(QTextFormat::TextUnderlineStyle, QTextCharFormat::SpellCheckUnderline);
    _errorFormat.setProperty(QTextFormat::TextUnderlineColor, QColor(Qt::red));
    if (!isLineValid(text.toStdString())) {

        // The following line does not work !
        _errorFormat.setToolTip(QString::fromStdString(getLastError()));

        setFormat(0, text.length(), _errorFormat);
    }
    for (const HighlightingRule &rule : qAsConst(_highlightingRules)) {
        QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
        while (matchIterator.hasNext()) {
            QRegularExpressionMatch match = matchIterator.next();
            QTextCharFormat format = this->format(match.capturedStart());
            format.merge(rule.format);
            setFormat(match.capturedStart(), match.capturedLength(), format);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-07-31 14:59:01

您可以通过重写对QEvent::ToolTip的处理和自己进行查找来使其工作。

我没有时间用C++重写我的完整答案,但是:

  • 这就是答案有执行覆盖的C++代码,但没有查找。(基本上,在QTextEditQPlainTextEdit上,您可以在setMouseTracking(True)上重写event方法,并将其交给默认实现,除非是event->type() == QEvent::ToolTip。这个问题的另一个答案是,如果你在使用它们,你也需要修正它们的页边距。)
  • 这个QtCenter帖子有C++代码来查找C++中的荧光应用格式.尽管它确实使用了一种不推荐的方法。(它的要点是,在现代Qt中,您需要使用cursorForPosition,然后使用.block().layout()->formats()并迭代,比较偏移量和游标的position()additionalFormats()是不推荐的方法,formats()是现代的方法。
  • 这就是我写的答案是一个完整的、可运行的示例,它演示了将语法检查信息公开为工具提示.它只是用Python针对PyQt编写的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59163492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档