Qt QLineEdit光标移动到textChanged()或commitData()之后的末尾
我有一个Qt QLineEdit光标移动到textChanged()或commitData()之后的末尾,qt,qtableview,qlineedit,qtextcursor,Qt,Qtableview,Qlineedit,Qtextcursor,我有一个QTableView,其中一列使用QLineEdit作为其编辑器代理,其他列需要在用户键入QLineEdit时动态更新(例如,其中一列包含在QLineEdit中键入的文本的长度,它应该随着用户键入而更新,而不是等待他们按Enter键提交) 我使用了这个代码:它主要起作用。它将QLineEdit textChanged()信号连接到编辑器的commitData()信号 这个代码的问题是,当用户类型时, QLINEEDIT/的插入光标总是跳转到末尾。如果您将文本附加到行的末尾,那就行了。但是
QTableView
,其中一列使用QLineEdit
作为其编辑器代理,其他列需要在用户键入QLineEdit
时动态更新(例如,其中一列包含在QLineEdit
中键入的文本的长度,它应该随着用户键入而更新,而不是等待他们按Enter键提交)
我使用了这个代码:它主要起作用。它将QLineEdit textChanged()
信号连接到编辑器的commitData()
信号
这个代码的问题是,当用户类型时,
我查看了
QLineEdit textChanged()
和commitData()
的代码,但我不知道是什么原因导致光标跳到QLineEdit
的末尾。有什么想法吗?谢谢!您可以记住最后一个文本光标位置,然后手动设置如下:
int pos = lineEdit->cursorPosition();
// change text
lineEdit->setCursorPosition(pos);
谢谢。这当然是正确的答案,但棘手的部分是根据正在发生的信号链和插槽确定何时保存和恢复光标位置。我不知道是否忽略了一些简单的问题,但最终我找到了答案。另请参阅。