2

我有一个 QTextEdit 控件。它有一个最大限制(它可以容纳的最大字符数)。为了实现这一点,我将一个插槽连接到 textChanged() 信号,当字符总数超过允许的最大值时,它会删除多余的字符。

有了这个,我在处理光标位置时遇到了一些问题。谁能告诉我如何在 QTextEdit 中保留光标位置?

4

2 回答 2

6

在您的插槽上:

如果字符数超过最大值:

向 QTextEdit 询问光标:

QTextCursor QTextEdit::textCursor() 常量

将返回值设置为您的 textEdit 光标(因为它返回一个副本)。来自文档:

返回代表当前可见光标的 QTextCursor 的副本。注意 > 返回光标的变化不会影响 QTextEdit 的光标;使用 setTextCursor() 来 > 更新可见光标。

void QTextEdit::setTextCursor(const QTextCursor & cursor)

要求光标删除最后一个字符

无效 QTextCursor::deletePreviousChar()

(编辑)作为代码:

QTextCursor  cursor = ui->textEdit->textCursor();
ui->textEdit->setTextCursor( cursor );
cursor.deletePreviousChar();
于 2013-06-19T06:42:26.853 回答
2

如果数字超过限制或输入了错误的字符,我正在使用:

ui->textEdit->textCursor().deletePreviousChar();
于 2021-05-26T14:03:01.180 回答