Удалить строку / блок из QTextEdit

Я борюсь с удалением блока / строки из QTextEdit, Приведенный ниже код должен (?) Работать, но он заканчивается бесконечным циклом по неизвестной мне причине. У меня есть подозрение, что next() а также previous() не приветствуются, если QTextDocument редактируется.

QTextBlock block = document()->begin();
while (block.isValid()) {
    if (to_do_or_not_to_do(block)) {
        QTextCursor cursor(block);
        cursor.select(QTextCursor::BlockUnderCursor);
        cursor.removeSelectedText();
    }
    block = block.next();
}

Итерация с использованием QTextDocument::findBlockByNumber() и удаление блока так же, как описано выше, тоже не сработало.

Я был бы признателен, если бы кто-нибудь указал мне правильное направление, как перебирать все блоки и удалять их, если это необходимо.

PS
В моем конкретном случае один блок = одна строка.
Qt 4.6.2, Ubuntu 10.04 x64

1 ответ

Решение

Немного изменив это работает для меня:

while (block.isValid()) {
    if (to_do_or_not_to_do(block)) {
        QTextCursor cursor(block);
        block = block.next();
        cursor.select(QTextCursor::BlockUnderCursor);
        cursor.removeSelectedText();
    }
    else
        block = block.next();
}
Другие вопросы по тегам