2012-05-02 81 views
5

我正在努力從QTextEdit中刪除塊/行。下面的代碼應該(?)工作,但它最終在一個未知的我的理由無限循環。我懷疑next()previous()不歡迎,如果QTextDocument正在編輯。從QTextEdit中刪除一行/塊

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 64

回答

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

正確的。因爲顯然'removeSelectedText()'殺死塊,'next()'不再有效。謝謝! :) –