为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Qt 对话框中获取自定义信号

如何从 Qt 对话框中获取自定义信号

POPMUISE 2022-05-19 14:10:47
我有一个带有 3 个按钮的 QDialog - 应用、确定和取消。在对话框的 __init__ 方法中,我使用以下方法连接 OK 和 Cancel:buttonBox.accepted.connect( self.accept )buttonBox.rejected.connect( self.reject )在我的主要形式中,我可以使用 OK 信号运行方法(addNameToSandbox)self.__nameDialog.accepted.connect(self.__addNameToSandbox)但是,我希望应用按钮执行相同的操作,但保持子对话框打开(而不是关闭它的确定按钮)。如何在主窗口上获得该信号?我在子对话框中有一个方法,我可以在单击应用时运行该方法,但是如何在主窗体中触发一个操作,我不知道。buttonBox.button( QtGui.QDialogButtonBox.Apply ).clicked.connect( self.add )我试过使用其他一些信号,比如完成,但我也想不出来。
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

在对话框中创建一个信号并将其连接到单击的应用按钮,然后使用信号将其连接到您的主窗体中:


class YourDialog(QtGui.QDialog):

    applyClicked = QtCore.pyqtSignal()


    def __init__(self, parent=None):

        super(YourDialog, self).__init__(parent):

        # ...

        buttonBox.accepted.connect(self.accept)

        buttonBox.rejected.connect(self.reject)

        apply_button = buttonBox.button(QtGui.QDialogButtonBox.Apply)

        apply_button.clicked.connect(self.applyClicked)

        # ...

self.__nameDialog.accepted.connect(self.__addNameToSandbox)

self.__nameDialog.applyClicked.connect(self.__applyfunc)


查看完整回答
反对 回复 2022-05-19
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您需要声明QtCore.pyqtSignal applied为类变量,然后使用self.applied.emit()

然后你就可以使用它了:

self.__nameDialog.applied.connect(self.__applyPressed)


查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号