从QTextEdit中删除一行/块

时间:2012-05-02 16:23:40

标签: qt qtextedit qtextdocument

我正在努力从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()进行迭代并以与上述相同的方式删除块也没有。

如果有人能指出我如何通过所有块进行迭代并在需要时删除它们,我将不胜感激。

P.S。
在我的特定情况下,一个块=一行 Qt 4.6.2,Ubuntu 10.04 x64

1 个答案:

答案 0 :(得分:5)

改变它对我有用:

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();
}