2012-04-13 8 views
0

私たちは私が発光するかわからないですCancelpyQTのダイアログシグナル/スロットをカスタマイズするにはどうすればよいですか?

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

をクリックしたとき、私は対話プロンプトをしたい

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

OKボタンのセットを持っているし、キャンセル。私はただのことを終わらせたくない。 Xを押したときにQMessageBoxを作成する方法を知っています。プロンプトを出して、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()方法を持っています。

答えて

1

あなたは何も放出しません。 QDialogにはスロットがあり、戻りコードをRejectedに設定してダイアログを閉じます。あなたはそれを呼び出す必要があります。カスタムスロットにはrejectという名前を付けて、上書きします。あなたはまだ好きで、それを呼び出すことができます。

super(NameOfClass, self).reject() 

たり、スロット名は何か他のものとの使用に変更します。

self.reject() 

そこに。

0

QDialogクラスのaccept()関数を上書きしたい場合があります。例えば

def accept(self): 
    if your_validation_userconfirmation_fct(): 
     self.done(QtWidgets.QDialog.Accepted) 
関連する問題