2012-04-13 124 views
0

我有一組按鈕,確定和取消如何自定義pyQT中的對話框信號/插槽?

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

我不知道發出什麼。我不想只關閉這個東西。當我按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有一個reject()插槽,它將返回碼設置爲Rejected並關閉對話框。你需要調用它。您也將自定義插槽命名爲reject,因此覆蓋它。你還可以把它想:

super(NameOfClass, self).reject() 

或更改插槽名稱到別的和使用:在那裏

self.reject() 

0

你可能想覆蓋你的QDialog類的accept()函數。

例如:

def accept(self): 
    if your_validation_userconfirmation_fct(): 
     self.done(QtWidgets.QDialog.Accepted)