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

时间:2011-10-02 02:12:41

标签: qt qt4 selection qtextedit qtextdocument

我正在尝试突出显示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);

1 个答案:

答案 0 :(得分:4)

提供更多关于什么不起作用的细节通常是好的:)

  • 您在QPlainTextEdit
  • 中尝试了哪些文字
  • 您在key使用了什么?
  • 您能否澄清find在使用上面前两项中指定的文字运行时发现的内容?
  • 你真的最终得到了一个额外的选择列表吗?
  • 缺乏可见的突出显示唯一不起作用的东西?

我尝试了您的代码,它似乎正确地找到了所有文本实例。问题似乎是您实际上没有为format的{​​{1}}成员设置任何值。设置extra后,请尝试设置extra.cursor,看看它是否有效。