QLineEdit光标在textChanged()或commitData()之后移至结束>> [

问题描述 投票:2回答:1
我有一个QTableView,其中一列使用QLineEdit作为其编辑委托,而其他列则需要随着用户键入QLineEdit而动态更新(例如,其中一列包含在QLineEdit中键入的文本,并且应随用户输入而更新,而不是等待用户按Enter提交。]]

我使用了此代码:Qt: Signal while a QTableView item data is being edited instead of after edit is done?多数有效。它将QLineEdit textChanged()信号连接到编辑器的commitData()信号。

此代码的问题在于,当用户键入内容时,QLineEdit的插入光标始终跳到结尾。如果您要在行尾添加文本,那很好。但是,如果用户想在行的中间插入或编辑文本,则每次键入一个字母时,文本插入光标都会跳到QLineEdit的末尾。每次按键后,他们都必须重新定位光标,以完成中间的插入/编辑。

如果禁用了映射器,则光标不会跳转,因此它不是编辑器委托所固有的;仅当使用上面链接的问题中的代码时,它才会发生。

我查看了QLineEdit textChanged()commitData()的代码,但我不知道是什么导致光标跳到QLineEdit的末尾。有任何想法吗?谢谢!

我有一个QTableView,其中一列使用QLineEdit作为其编辑委托,而其他列则需要随着用户键入QLineEdit而动态更新(例如,其中一列...

qt qtableview qlineedit
1个回答
3
投票
您可以记住上一个文本光标的位置,然后像这样手动设置它:

int pos = lineEdit->cursorPosition(); // change text lineEdit->setCursorPosition(pos);

© www.soinside.com 2019 - 2024. All rights reserved.