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