Найдите все нужные строки и выберите их с помощью QPlainTextEdit :: setExtraSelections () - PullRequest
2 голосов
/ 02 октября 2011

Я пытаюсь выделить все строки, найденные в виджете 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 Ответ

4 голосов
/ 02 октября 2011

Обычно полезно предоставить немного больше информации о том, что не работает:)

  • Какой текст вы пробовали в QPlainTextEdit?
  • Что вы используетедля key?
  • Можете ли вы уточнить, что find находит при работе с текстом, указанным в первых двух пунктах выше?
  • У вас действительно есть список дополнительных выборов?
  • Не работает ли видимая подсветка, единственное, что не работает?

Я попробовал ваш код, и кажется, что все текстовые экземпляры правильно найдены.Кажется, проблема в том, что вы на самом деле не устанавливаете какие-либо значения для format члена extra.После того, как вы установили extra.cursor, попробуйте установить extra.format.fontUnderline(true);, чтобы посмотреть, оказывает ли он какое-либо влияние.

...