我有一个pyqt应用程序,我有两个QLineEdit字段从QDataWidgetMapper获取数据。我可以编辑字段中的文本,并且当我改变时,更改会提交焦点丢失。单击其他未选择的字段。
但是,如果我编辑文本然后点击菜单栏,那么例如保存,我不会有焦点丢失,因此我最后输入的数据永远不会到达模型。
如何在点击菜单栏时获得焦点损失?
答案 0 :(得分:1)
对我来说,连接QLineEdit.editingFinished信号按预期工作。也就是说,每当按下return / enter时发送信号,或者行编辑失去焦点(包括打开菜单,最小化窗口,关闭程序等)。
然而,从长远来看,我认为单靠这种机制是一个坏主意。举一个例子说明为什么会这样:如果您在将来某个时候为菜单项添加了键盘快捷键,该怎么办?通过键盘快捷键激活保存操作不会触发焦点更改事件...
所以我会建立一个单独的机制,可以在调用save-action之前以编程方式提交所有挂起的更改。