我的表格上有一個QTextEdit
,名爲translationInput
。我正在嘗試爲用戶提供編輯功能。在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::PreviousCharacter
而不是QTextCursor::Left
這樣做,並試圖在將焦點返回到編輯之前和之後移動它,但這不會改變任何內容。
所以問題是,我如何將光標移動到我的QTextEdit
?
您可以直接使用'moveCursor()'移動文本光標:: MoveAnchor,4);' – iliis 2014-05-07 09:46:07
我認爲上述評論應該變成答案。 – 2017-08-29 18:23:52