gpt4 book ai didi

qt - QLineEdit 光标在 textChanged() 或 commitData() 之后移动到结束

转载 作者:行者123 更新时间:2023-12-04 00:43:28 25 4
gpt4 key购买 nike

我有一个 QTableView,其中一列使用 QLineEdit 作为其编辑器委托(delegate),其他列需要在用户输入 时动态更新QLineEdit(例如,其中一列包含在 QLineEdit 中键入的文本的长度,它应该随着用户键入而更新,而不是等待他们按 Enter 键提交)。

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

此代码的问题在于,当用户键入时,QLineEdit 的插入光标总是跳到末尾。如果您将文本附加到该行的末尾,那很好。但是如果用户想在行的中间插入或编辑文本,每输入一个字母,文本插入光标就会跳到QLineEdit的末尾。每次击键后,他们必须重新定位光标,以便在中间完成插入/编辑。

如果我禁用映射器,则光标不会跳转,因此它不是编辑器委托(delegate)固有的东西;只有在使用上面链接的问题中的代码时才会发生。

我查看了 QLineEdit textChanged()commitData() 的代码,但我无法弄清楚是什么导致光标跳到QLineEdit。有任何想法吗?谢谢!

最佳答案

你可以记住最后一个文本光标位置,然后像这样手动设置它:

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

关于qt - QLineEdit 光标在 textChanged() 或 commitData() 之后移动到结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com