0

我有一组按钮,确定和取消

buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok|
                                    QtGui.QDialogButtonBox.Cancel)

当我们点击时,我想要一个对话提示Cancel

self.connect(buttonBox, SIGNAL("rejected()"),
                            self, SLOT("reject()"))
    def reject(self):
        print 'hello'
        self.emit(SIGNAL("reject()"))

我不确定要发射什么。我不想只是关闭这个东西。QMessageBox当我按下 时,我知道如何创建一个X。我想做提示并关闭reject

我希望这是有道理的。谢谢。


供您参考,当我按下X关闭整个应用程序时,我有一个覆盖的方法

def closeEvent(self, event):
    reply = QtGui.QMessageBox.question(self, 'Message', 'Are you sure to quit?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
    if reply == QtGui.QMessageBox.Yes:
        event.accept()
    else:
        event.ignore()

这种覆盖self.close()方法。

4

3 回答 3

1

你不会发出任何东西。QDialog有一个reject()设置返回码Rejected并关闭对话框的槽。你需要这样称呼。您reject还命名了自定义插槽,从而覆盖了它。你仍然可以这样称呼它:

super(NameOfClass, self).reject()

或将您的插槽名称更改为其他名称并使用:

self.reject()

在那里。

于 2012-04-13T23:02:39.347 回答
0

您可能想要覆盖 QDialog 类的 accept() 函数。

例如:

def accept(self):
    if your_validation_userconfirmation_fct():
        self.done(QtWidgets.QDialog.Accepted)
于 2017-01-05T12:16:02.320 回答
0

让我们覆盖accept() 函数。

def accept(self):
    if validation_ok():
        super().accept()
于 2020-02-17T17:38:24.257 回答