2013-06-19 4 views
1

У меня есть элемент управления QTextEdit. Он имеет максимальный предел (максимальное количество символов, которое он может удерживать). Чтобы реализовать это, я подключил слот к сигналу textChanged(), который удаляет дополнительный символ, когда общее количество символов превышает допустимый максимум.Сохранить позицию курсора в QTextEdit

С этим у меня есть некоторые проблемы с положением курсора. Может ли кто-нибудь сказать мне, как сохранить позицию курсора в QTextEdit?

ответ

4

На слоте:

Если Количество символов превышает максимальное значение:

Задать QTextEdit для Cursor:

QTextCursor QTextEdit::textCursor() const

Установить возвращаемое значение в качестве TextEdit курсора (потому что он возвращает копию). From doc:

Возвращает копию QTextCursor, которая представляет текущий видимый курсор. Обратите внимание, что> изменения в возвращаемом курсоре не влияют на курсор QTextEdit; используйте setTextCursor(), чтобы> обновить видимый курсор.

void QTextEdit::setTextCursor(const QTextCursor & cursor)

Задайте курсор для удаления последнего символа

void QTextCursor::deletePreviousChar()

(Edit) в качестве кода:

QTextCursor cursor = ui->textEdit->textCursor(); 
ui->textEdit->setTextCursor(cursor); 
cursor.deletePreviousChar(); 
+0

QTextCursor cursor = ui->textEdit->textCursor(); ui->textEdit->setTextCursor(cursor);
чем смысл написания выше двухлинейного ? Он только получает позицию курсора и устанавливает его. – Bhai

+0

Документация: 'Возвращает копию QTextCursor, которая представляет текущий видимый курсор. Обратите внимание, что изменения на возвращаемом курсоре не влияют на курсор QTextEdit; используйте setTextCursor() для обновления видимого курсора. ' – Trompa

Смежные вопросы