3

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

1 に答える 1

4

通常、何が機能しないかについてもう少し詳しく説明することをお勧めします:)

  • でどのテキストを試しましたQPlainTextEditか?
  • には何を使用していkeyますか?
  • find上記の最初の 2 つの項目で指定されたテキストを使用して実行すると、何が検出されるかを明確にできますか?
  • あなたは実際に余分な選択肢のリストになってしまいますか?
  • 機能していないのは、目に見える強調表示がないことだけですか?

あなたのコードを試したところ、すべてのテキスト インスタンスが正しく検出されたようです。format問題は、実際には のメンバーに値を設定していないようですextra。を設定したら、効果があるかどうかを確認するためだけにextra.cursor設定してみextra.format.fontUnderline(true);てください。

于 2011-10-02T03:25:28.987 に答える