Russian Qt Forum

Qt => Общие вопросы => Тема начата: VAP от Декабрь 27, 2009, 13:10



Название: Как убрать определенный текст из QTextBrowser?
Отправлено: VAP от Декабрь 27, 2009, 13:10
Добрый день! Добавляю текст в QTextBrowser вызовом append(const QString &). Таких записей делаю определенное количество. После этого может возникнуть необходимость в случайном порядке убрать некоторые конкретные записи, по сигналу. Как такое можно сделать? В доках ничего подходящего не обнаружил.


Название: Re: Как убрать определенный текст из QTextBrowser?
Отправлено: BRE от Декабрь 27, 2009, 13:16
Посмотри на QTextDocument/QTExtCursor.


Название: Re: Как убрать определенный текст из QTextBrowser?
Отправлено: VAP от Декабрь 27, 2009, 14:09
Спасибо огромное BRE за подсказку. Использовал код из примера TextFinder + добавил QTextCursor::removeSelectedText (), может кому-то тоже пригодится.
Код:
void FilterDialog::deselect(QString &row)
{
    QTextDocument *doc = textBrowser->document();
    QTextCursor highlightCursor(doc);
    QTextCursor cursor(doc);
    cursor.beginEditBlock();
   
    QTextCharFormat plainFormat(highlightCursor.charFormat());

    while(!highlightCursor.isNull() && !cursor.isNull()) {
          highlightCursor = doc->find(row, highlightCursor, QTextDocument::FindWholeWords);
          if (!highlightCursor.isNull()) {
              highlightCursor.movePosition(QTextCursor::WordRight, QTextCursor::KeepAnchor);
              highlightCursor.removeSelectedText();
          }
    }
    cursor.endEditBlock();
}