我有一个 QTextEdit 控件。它有一个最大限制(它可以容纳的最大字符数)。为了实现这一点,我将一个插槽连接到 textChanged() 信号,当字符总数超过允许的最大值时,它会删除多余的字符。
有了这个,我在处理光标位置时遇到了一些问题。谁能告诉我如何在 QTextEdit 中保留光标位置?
在您的插槽上:
如果字符数超过最大值:
向 QTextEdit 询问光标:
QTextCursor QTextEdit::textCursor() 常量
将返回值设置为您的 textEdit 光标(因为它返回一个副本)。来自文档:
返回代表当前可见光标的 QTextCursor 的副本。注意 > 返回光标的变化不会影响 QTextEdit 的光标;使用 setTextCursor() 来 > 更新可见光标。
void QTextEdit::setTextCursor(const QTextCursor & cursor)
要求光标删除最后一个字符
(编辑)作为代码:
QTextCursor cursor = ui->textEdit->textCursor();
ui->textEdit->setTextCursor( cursor );
cursor.deletePreviousChar();
如果数字超过限制或输入了错误的字符,我正在使用:
ui->textEdit->textCursor().deletePreviousChar();