migel
18th December 2012, 17:59
Can some one explain what I am doing wrong here ?. What I need is to select a text in QTextEdit and make some changes in the selected block texts.
debug prints selected block texts just fine but only when I remove "cursor.insertText("replace block text");". Once added back it screwing up somehow the block numbers and the entire concept. How to do it right ?
QTextCursor cursor = this->textCursor();
int start = cursor.selectionStart();
int end = cursor.selectionEnd();
if(!cursor.hasSelection())
return;
cursor.setPosition(start, QTextCursor::KeepAnchor);
int startLine = cursor.blockNumber();
cursor.setPosition(end, QTextCursor::KeepAnchor);
int lastLine = cursor.blockNumber();
qDebug() << start << end;
for(int blockNUmber = startLine; blockNUmber <= lastLine; blockNUmber++)
{
QTextBlock block = document()->findBlockByNumber(blockNUmber);
QString blockText = block.text();
qDebug() << blockNUmber << block.position() << blockText;
cursor.clearSelection();
cursor.setPosition(block.position(),QTextCursor::K eepAnchor);
cursor.insertText("replace block text");
}
debug prints selected block texts just fine but only when I remove "cursor.insertText("replace block text");". Once added back it screwing up somehow the block numbers and the entire concept. How to do it right ?
QTextCursor cursor = this->textCursor();
int start = cursor.selectionStart();
int end = cursor.selectionEnd();
if(!cursor.hasSelection())
return;
cursor.setPosition(start, QTextCursor::KeepAnchor);
int startLine = cursor.blockNumber();
cursor.setPosition(end, QTextCursor::KeepAnchor);
int lastLine = cursor.blockNumber();
qDebug() << start << end;
for(int blockNUmber = startLine; blockNUmber <= lastLine; blockNUmber++)
{
QTextBlock block = document()->findBlockByNumber(blockNUmber);
QString blockText = block.text();
qDebug() << blockNUmber << block.position() << blockText;
cursor.clearSelection();
cursor.setPosition(block.position(),QTextCursor::K eepAnchor);
cursor.insertText("replace block text");
}