2012-05-02 36 views
5

ブロック/行の削除を苦労してQTextEditからやっています。下のコードは(?)うまくいくはずですが、私には未知の部分が無限ループで終わります。 QTextDocumentを編集中の場合、next()previous()は歓迎されないという疑いがあります。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.
私の場合、1ブロック= 1行。
のQt 4.6.2は、Ubuntu 10.04のx64

答えて

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()'はもはや動かないからです。ありがとう! :) –

関連する問題