2012-02-12 19 views

risposta

48

Ignora il metodo closeEvent di QWidget nella finestra principale.

Ad esempio:

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

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

Un'altra possibilità è utilizzare s' il QApplicationaboutToQuit segnale simili:

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

noti che questa non funziona nel thread principale sta calcolando occupato. Uno dovrebbe spostare i calcoli su un altro thread per poter chiudere la finestra. – d33tah

+1

nota che su una QMainWindow, non esiste un attributo 'canExit' – Tcll

+1

@Tcll, non c'è alcun attributo da nessuna parte nella libreria Qt (a mia conoscenza, ma sicuramente non in QWidget o QMainWindow). Questo è il punto: lo definisci come gestore personalizzato. –

Problemi correlati