2012-04-13 2 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을 누르면, 나는 오버라이드 (override) 방법

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

이 오버라이드 (override) 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) 
관련 문제