문제

나는 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?

도움이 되었습니까?

해결책

문서를 더 자세히 조사하여 문제를 해결했습니다.

그만큼 textCursor() 함수는 복사 커서의 QTextEdit.그래서 실제 내용을 수정하려면, setTextCursor() 기능을 사용해야 합니다:

QTextCursor tmpCursor = ui.translationInput->textCursor();
tmpCursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
ui.translationInput->setTextCursor(tmpCursor);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top