如何从 Qt 对话框中获取自定义信号
Posted
技术标签:
【中文标题】如何从 Qt 对话框中获取自定义信号【英文标题】:How to get custom signals from a Qt dialog box 【发布时间】:2019-09-04 09:41:07 【问题描述】:我有一个带有 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 )
我尝试过使用其他一些信号,例如完成,但我也无法弄清楚那个。
【问题讨论】:
【参考方案1】:在对话框中创建一个信号并将其连接到单击的应用按钮,然后在您的主窗体中使用信号连接它:
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)
【讨论】:
【参考方案2】:您需要将QtCore.pyqtSignal applied
声明为类变量,然后使用self.applied.emit()
启动它
然后你就可以使用它了:
self.__nameDialog.applied.connect(self.__applyPressed)
【讨论】:
以上是关于如何从 Qt 对话框中获取自定义信号的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 如何从 QListWidget 中获取选定的自定义项目?
Qt的高手,向你们请教下: 先谢谢了。我用Qt designer 设计了一个简单的ui ,想自定义一个简单的槽,不会
如何在自定义文件浏览对话框Qt C++中实现返回和下一步按钮