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
在我的特殊情况下,一个块 = 一行。
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 回答