我有一个表格,上面有一个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
?