0

ボタンのセット、OK とキャンセルがあります。

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()Rejectedreject

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 に答える