【问题标题】:Remove a line/block from QTextEdit从 QTextEdit 中删除一行/块
【发布时间】:2012-05-02 16:23:40
【问题描述】:

我正在努力从QTextEdit 中删除块/行。下面的代码应该(?)可以工作,但由于某些我不知道的原因,它最终进入了无限循环。如果正在编辑 QTextDocument,我怀疑 next()previous() 不受欢迎。

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() 进行迭代并以与上述相同的方式删除块也不起作用。

如果有人能指出我如何迭代所有块并在需要时删除它们的正确方向,我将不胜感激。

附言
在我的特殊情况下,一个块 = 一行。
Qt 4.6.2,Ubuntu 10.04 x64

【问题讨论】:

    标签: qt qtextedit qtextdocument


    【解决方案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();
    }
    

    【讨论】:

    • 正确。因为显然removeSelectedText() 杀死了块,而next() 不再起作用了。谢谢! :)
    猜你喜欢
    • 2016-01-05
    • 2023-02-26
    • 2015-03-05
    • 2013-08-29
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多