У меня есть элемент управления QTextEdit. У него максимальный лимит (максимальное количество символов, которое он может содержать). Чтобы реализовать это, я подключил слот к сигналу textChanged (), который удаляет лишний символ, когда общее количество символов превышает допустимый максимум.
С этим у меня есть некоторые проблемы, связанные с положением курсора. Может кто-нибудь сказать мне, как сохранить положение курсора в QTextEdit?
На вашем слоте:
Если число символов превышает максимальное:
Спросите QTextEdit для курсора:
QTextCursor QTextEdit :: textCursor () const
Установите возвращаемое значение в качестве курсора textEdit (потому что он возвращает копию). Из документа:
Возвращает копию QTextCursor, которая представляет текущий видимый курсор. Обратите внимание, что> изменения в возвращенном курсоре не влияют на курсор QTextEdit; используйте setTextCursor (), чтобы> обновить видимый курсор.
void QTextEdit :: setTextCursor (const QTextCursor & курсор)
Попросить курсор удалить последний символ
(Изменить) как код:
QTextCursor cursor = ui->textEdit->textCursor();
ui->textEdit->setTextCursor( cursor );
cursor.deletePreviousChar();
Других решений пока нет …