我有一个QTextEdit控件.它有一个最大限制(它可以容纳的最大字符数).为了实现这一点,我已经将一个插槽连接到textChanged()信号,当总字符数超过允许的最大值时,该信号将删除额外的字符.
有了这个,我在处理光标位置时遇到了一些问题.谁能告诉我如何在QTextEdit中保留光标位置?
在你的插槽上:
如果字符数超过最大值:
向QTextEdit询问Cursor:
QTextCursor QTextEdit :: textCursor()const
将返回值设置为textEdit游标(因为它返回一个副本).来自doc:
返回表示当前可见光标的QTextCursor的副本.请注意>返回游标上的>更改不会影响QTextEdit的游标; 使用setTextCursor()来>更新可见光标.
void QTextEdit :: setTextCursor(const QTextCursor&cursor)
让光标删除最后一个字符
void QTextCursor :: deletePreviousChar()
(编辑)代码:
QTextCursor cursor = ui->textEdit->textCursor(); ui->textEdit->setTextCursor( cursor ); cursor.deletePreviousChar();