Перемещение курсора внутри QTextEdit

У меня есть форма с QTextEditна ней, которая называется translationInput. Я пытаюсь предоставить пользователю возможность редактирования.

Этот QTextEditбудет содержать текст в формате HTML -. У меня есть набор кнопок, например «полужирный », «Курсив » и т. д., которые должны добавлять соответствующие теги в документ. Если кнопка нажата, когда текст не выделен, я просто хочу вставить пару тегов, например, <b></b>. Если выделен какой-то текст, я хочу, чтобы теги отображались слева и справа от него.

Это прекрасно работает. Однако я также хочу, чтобы после этого курсор был помещен перед закрывающим тегом , чтобы пользователь мог продолжать печатать внутри нового добавленного тега -без необходимости перемещать курсор вручную. По умолчанию курсор появляется справа после нового -добавленного текста (, поэтому в моем случае сразу после закрывающего тега ).

Вот код, который у меня есть для кнопки Курсив :

//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText( newText );
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);

Однако последняя строка ничего не делает, курсор не двигается, хотя movePosition()возвращает true, что означает, что все операции были успешно выполнены.

Я также пытался сделать это с помощью QTextCursor::PreviousCharacterвместо QTextCursor::Leftи пытался перемещать его до и после возврата фокуса к редактированию, это ничего не меняет.

Итак, вопрос в том, как мне переместить курсор внутри моего QTextEdit?

9
задан SingerOfTheFall 26 July 2012 в 20:41
поделиться