首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当在editingFinished事件中执行对话框时,将第二次发出QlineEdit的editingFinshed。

当在editingFinished事件中执行对话框时,将第二次发出QlineEdit的editingFinshed。
EN

Stack Overflow用户
提问于 2016-05-26 10:58:13
回答 2查看 2.3K关注 0票数 1

当我将editingFinished的信号QLineEdit连接到包含执行QDialog的函数时,第二次发射QLineEdit的信号editingFinished。那个介绍看起来不太清楚..。下一个示例将帮助您理解:

代码语言:javascript
运行
复制
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

class Foo(QLineEdit):
    def __init__(self):
        super().__init__()
        self.editingFinished.connect(self.editingFinishedEvent)

    def editingFinishedEvent(self):
        dialog = QDialog()
        dialog.exec_()
        print('editing finished event occured !')

app = QApplication(sys.argv)

win = Foo()
win.show()

sys.exit(app.exec_())

该脚本创建并显示一个QLineEdit。当我编辑那个QLineEdit的值并按enter键时,editingFinishedEvent方法应该执行一次。如果我删除行dialog.exec_(),情况就是这样。但如果我不执行,editingFinishedEvent将被执行两次而不是一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-26 19:29:44

当按下返回或输入键或行编辑丢失焦点见文件时,将发出editingFinished信号。通过editingFinishedEvent,焦点从行编辑到对话框,第二次发出信号。您可以使用returnPressed信号代替。只有在按下“返回”或“输入”键时才会发出。

票数 2
EN

Stack Overflow用户

发布于 2019-04-03 15:03:39

我认为在启动对话框之前可以断开插槽,然后再重新连接:

代码语言:javascript
运行
复制
class Foo(QLineEdit):
    def __init__(self):
        super().__init__()
        self.editingFinished.connect(self.editingFinishedEvent)

    def editingFinishedEvent(self):
        # disconnect
        self.editingFinished.disconnect()
        dialog = QDialog()
        dialog.exec_()
        # re-connect
        self.editingFinished.connect(self.editingFinishedEvent)

这样,聚焦或返回按压都会触发插槽,但只会触发一次.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37458898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档