Удалить строку / блок из 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();
}