找到所有想要的字符串并使用 QPlainTextEdit::setExtraSelections() 选择它们

发布于 2024-12-07 08:25:53 字数 499 浏览 1 评论 0原文

我试图突出显示 QPlainTextEdit 小部件中找到的所有字符串,但 find() 会 只返回第一个结果。下面的代码无法运行,为什么?

(textview是从QPlainTextEdit派生的类)

并且请不要要求我使用QSyntaxHighlighter来设置颜色,它是不同的。

QList<QTextEdit::ExtraSelection> extraSelections;
textview->moveCursor(QTextCursor::Start);
while ( textview->find(key) )
{
    QTextEdit::ExtraSelection extra;
    extra.cursor = textview->textCursor();
    extraSelections.append(extra);
}

textview->setExtraSelections(extraSelections);

I'm trying to highlight all strings find in a QPlainTextEdit widget , but find() will
only return the first result. The following code isn't working out , why ?

(textview is a class derivated from QPlainTextEdit)

And please don't ask me to use QSyntaxHighlighter to set up colors , it's different.

QList<QTextEdit::ExtraSelection> extraSelections;
textview->moveCursor(QTextCursor::Start);
while ( textview->find(key) )
{
    QTextEdit::ExtraSelection extra;
    extra.cursor = textview->textCursor();
    extraSelections.append(extra);
}

textview->setExtraSelections(extraSelections);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧情勿念 2024-12-14 08:25:54

通常最好提供有关无效内容的更多详细信息:)

  • 您在 QPlainTextEdit 中尝试过哪些文本?
  • 您使用什么密钥
  • 您能否澄清一下,当使用上面前两项中指定的文本运行时,find 会找到什么?
  • 您最终是否真的得到了额外选择的列表?
  • 缺乏可见的突出显示是唯一不起作用的事情吗?

我尝试了你的代码,它似乎正确找到了所有文本实例。问题似乎是您实际上没有为 extraformat 成员设置任何值。设置 extra.cursor 后,尝试设置 extra.format.fontUnderline(true); 只是看看它是否有任何效果。

It's usually good to provide a little more detail about what doesn't work :)

  • What text have you tried in the QPlainTextEdit?
  • What are you using for a key?
  • Can you clarify what find finds when running with the text specified in the first two items above?
  • Do you actually end up with a list of extra selections?
  • Is the lack of visible highlighting the only thing not working?

I tried your code and it seems to find all the text instances correctly. The problem seems to be that you aren't actually setting any values for the format member of extra. After you set extra.cursor, try setting extra.format.fontUnderline(true); just to see if it is having any effect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文