2012-02-12 10 views

答えて

48
あなたのメインウィンドウに QWidgetcloseEventメソッドをオーバーライドします

。例えば

class MainWindow(QWidget): # or QMainWindow 
    ... 

    def closeEvent(self, event): 
     # do stuff 
     if can_exit: 
      event.accept() # let the window close 
     else: 
      event.ignore() 

別の可能性としては、このようQApplicationaboutToQuit信号を使用することです:これはメインスレッドで動作しないこと

app = QApplication(sys.argv) 
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable 
+5

注忙しい計算です。ウィンドウを閉じるには、計算を別のスレッドに移動する必要があります。 QMainWindowに、何の属性 'canExit' – d33tah

+1

ノートは、(私の知る限りでは、間違いなくないQWidgetのか、QMainWindow中)Qtライブラリでどこにも属性がありません。 これがポイントです。カスタムハンドラとして定義します。 – Tcll

+1

@Tcllがないことを –

関連する問題