6

からのブロック/行の削除に苦労してい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
私の特定のケースでは、1ブロック= 1行です。
Qt 4.6.2、Ubuntu 10.04 x64

4

1 に答える 1

6

少し変更するとうまくいきます:

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();
}
于 2012-05-02T17:03:54.170 に答える