背景:
在QLineEdit结束编辑后,需要更新某个变量为输入框中最新值。
原本的方案为:在editingFinished()信号的槽函数中更新,但是测试发现,偶发会存在变量未更新的情况。
经过搜索发现:
当按下 Return 或 Enter 键或行编辑失去焦点时,会发出此信号。 请注意,如果在行编辑上设置了 validator() 或 inputMask() 并按下了 enter/return,则仅当输入遵循 inputMask() 并且 validator() 返回 QValidator 时才会发出 editingFinished() 信号。
看到这里恍然大悟,我就是对输入框设置了QValidator。看到其他人有说是因为不符合条件,所以没触发,但是既然设置了QValidator,输入框就会进行限制,不符合条件的就不能输入,且经过测试,我输入的值是符合条件的但是也是没触发信号,具体原因未知了。
所以最终我放弃了使用信号,采用在eventFilter中监控FocusOut事件来达到目的。
QLineEdit 的editingFinished()信号不触发问题
最新推荐文章于 2024-05-19 14:55:00 发布