2012-07-27 68 views
8

translationInputという形のQTextEditのフォームがあります。私はユーザーに編集機能を提供しようとしています。QTextEditの中にカーソルを移動

この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::Leftの代わりにQTextCursor::PreviousCharacterでこれをやってみましたが、編集にフォーカスを戻す前後に移動しようとしましたが、何も変わりません。

質問には、QTextEditの中にカーソルを移動するにはどうすればよいですか?

答えて

9

ドキュメントを深く掘り下げて問題を解決しました。

textCursor()関数は、からコピーのカーソルを返します。だから、実際のものを修正するために、setTextCursor()機能を使用する必要があります。 `ui.translationInput-> moveCursor(QTextCursor ::左、QTextCursor:

QTextCursor tmpCursor = ui.translationInput->textCursor(); 
tmpCursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4); 
ui.translationInput->setTextCursor(tmpCursor); 
+10

あなたが直接' moveCursorを() '使用してテキストカーソルを移動することができます:: MoveAnchor、4); ' – iliis

+0

私は上記のコメントを答えに変えなければならないと思います。 –

関連する問題