如何从 Qt 对话框中获取自定义信号
How to get custom signals from a Qt dialog box
我有一个带有 3 个按钮的 QDialog - 应用、确定和取消。在对话框的 __init__ 方法中,我使用以下方法连接 OK 和 Cancel:
buttonBox.accepted.connect( self.accept )
buttonBox.rejected.connect( self.reject )
在我的主窗体中,我能够使用
运行 OK 信号的方法 (addNameToSandbox)
self.__nameDialog.accepted.connect(self.__addNameToSandbox)
但是,我希望“应用”按钮执行相同的操作但保持子对话框打开(而不是关闭它的“确定”按钮)。我怎样才能在主 window 上获得该信号?
我在子对话框中有一个方法,当单击“应用”时我可以运行,但是我不知道如何在主窗体中触发一个动作,我不知道。
buttonBox.button( QtGui.QDialogButtonBox.Apply ).clicked.connect( self.add )
我试过使用其他一些信号,比如 finished,但我也想不通。
您需要将 QtCore.pyqtSignal applied
声明为 class 变量,然后用 self.applied.emit()
启动它
那你就可以使用了:
self.__nameDialog.applied.connect(self.__applyPressed)
在对话框中创建一个信号并将其连接到应用按钮的点击,然后在您的主窗体中使用信号连接它:
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)
我有一个带有 3 个按钮的 QDialog - 应用、确定和取消。在对话框的 __init__ 方法中,我使用以下方法连接 OK 和 Cancel:
buttonBox.accepted.connect( self.accept )
buttonBox.rejected.connect( self.reject )
在我的主窗体中,我能够使用
运行 OK 信号的方法 (addNameToSandbox)self.__nameDialog.accepted.connect(self.__addNameToSandbox)
但是,我希望“应用”按钮执行相同的操作但保持子对话框打开(而不是关闭它的“确定”按钮)。我怎样才能在主 window 上获得该信号?
我在子对话框中有一个方法,当单击“应用”时我可以运行,但是我不知道如何在主窗体中触发一个动作,我不知道。
buttonBox.button( QtGui.QDialogButtonBox.Apply ).clicked.connect( self.add )
我试过使用其他一些信号,比如 finished,但我也想不通。
您需要将 QtCore.pyqtSignal applied
声明为 class 变量,然后用 self.applied.emit()
那你就可以使用了:
self.__nameDialog.applied.connect(self.__applyPressed)
在对话框中创建一个信号并将其连接到应用按钮的点击,然后在您的主窗体中使用信号连接它:
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)