Having problems with selecting pieces of text using the Qt framework. For example if i have this document : "No time for rest". And i want to select "ime for r" and delete this piece of text from the document, how should i do it using QTextCursor? Here is my code:
QTextCursor *cursor = new QTextCursor(ui->plainTextEdit->document());
cursor->setPosition(StartPos,QTextCursor::MoveAnchor);
cursor->setPosition(EndPos,QTextCursor::KeepAnchor);
cursor->select(QTextCursor::LineUnderCursor);
cursor->clearSelection();
Unfortunately it deletes the whole line from the text. I've tried using other selection types like WordUnderCursor or BlockUnderCursor, but no result. Or maybe there is a better way to do it? Thanks in advance.
There are several issues in your code:
cursor->select(QTextCursor::LineUnderCursor);
line selects whole current line. You don't want to delete whole line, so why would you write this? Remove this line of code.clearSelection()
just deselects everything. UseremoveSelectedText()
instead.QTextCursor
usingnew
. It's correct but not needed. You should avoid pointers when possible.QTextCursor
is usually passed by value or reference. Also you can useQPlainTextEdit::textCursor
to get a copy of the edit cursor.So, the code should look like that: