In Python (PyQt4 o pyqt5) si avrebbe bisogno di fare quanto segue:
class MyWindow(QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
#
# My initializations...
#
''''''
def closeEvent(self, *args, **kwargs):
#
# Stuff I want to do when this
# just before (!) this window gets closed...
#
''''''
E 'interessante sapere che la roba in CloseEvent (..) funzione viene eseguito solo prima di la finestra si chiude.Lo si può verificare con il seguente test:
# Test if the closeEvent(..) function
# executes just before or just after the window closes.
def closeEvent(self, *args, **kwargs):
# 'self' is the QMainWindow-object.
print(self)
print(self.isVisible())
# Print out the same stuff 2 seconds from now.
QTimer.singleShot(2000, lambda: print(self))
QTimer.singleShot(2100, lambda: print(self.isVisible()))
''''''
Questa è l'uscita nel vostro terminale:
<myProj.MyWindow object at 0x000001D3C3B3AAF8>
True
<myProj.MyWindow object at 0x000001D3C3B3AAF8>
False
Ciò dimostra che la finestra era ancora visibile quando si entra nel CloseEvent (..) funzione , ma non dopo aver abbandonato quella funzione.
fonte
2017-04-21 15:38:33
Dove si trova "questo" nella gerarchia di 'QObject'? Potrebbe essere che viene cancellato prima che il segnale venga inviato. Ovviamente non mi preoccuperei troppo perché ci sono alternative migliori nelle risposte date finora. – Troubadour
Non puoi scaricare i dati con il codice che hai mostrato ... Inoltre, se la tua domanda è come scaricare i dati prima che QMainWindow si chiuda? o perché QMainwindow non si sta chiudendo? Chiaro ... – liaK
Voglio scrivere e file XML dopo aver fatto clic sulla 'x' per chiudere la finestra principale. Non sembra funzionare con il codice sopra o QApplication :: lastWindowClosed() (o QApplication :: aboutToQuit() per l'argomento) ... Havent ha provato QCloseEvent, ma per mantenere la struttura MVC, io invece no. La classe in cui sto lavorando non è la QMainWindow, piuttosto utilizzo i file ottenuti compilando i file ui creati nel designer. – Cenoc