Найдите все нужные строки и выберите их с помощью QPlainTextEdit::setExtraSelections()
Я пытаюсь выделить все строки находки в виджете 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 ответ
Решение
Обычно полезно предоставить немного больше информации о том, что не работает:)
- Какой текст вы пробовали в
QPlainTextEdit
? - Что вы используете для
key
? - Можете ли вы уточнить, что
find
находит при запуске с текстом, указанным в первых двух пунктах выше? - Вы на самом деле в конечном итоге список дополнительных выборов?
- Не работает ли отсутствие видимой подсветки?
Я попробовал ваш код, и кажется, что все текстовые экземпляры правильно найдены. Кажется, проблема в том, что вы не устанавливаете какие-либо значения для format
член extra
, После того, как вы установили extra.cursor
, попробуйте установить extra.format.fontUnderline(true);
просто чтобы увидеть, оказывает ли это какое-либо влияние.