保留QTextEdit中的光标位置

时间:2013-06-19 04:35:11

标签: c++ qt qlineedit

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

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

2 个答案:

答案 0 :(得分:5)

在你的插槽中:

如果字符数超过最大值:

  

向QTextEdit询问光标:

     

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();

答案 1 :(得分:1)

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

ui->textEdit->textCursor().deletePreviousChar();