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. Use removeSelectedText()
instead.QTextCursor
using new
. It's correct but not needed. You should avoid pointers when possible. QTextCursor
is usually passed by value or reference. Also you can use QPlainTextEdit::textCursor
to get a copy of the edit cursor.So, the code should look like that:
QTextCursor cursor = ui->plainTextEdit->textCursor();
cursor.setPosition(StartPos, QTextCursor::MoveAnchor);
cursor.setPosition(EndPos, QTextCursor::KeepAnchor);
cursor.removeSelectedText();