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
です。