che sto sviluppando un'applicazione Qt e ha cambiato il comportamento di chiusura con il closeEvent
virtual function in questo modo:Come modificare il comportamento dell'evento minimizzato in PyQt o PySide?
class MainWindow(QMainWindow):
def closeEvent(self, event):
event.ignore()
self.hide()
self.trayicon.showMessage('Running', 'Running in the background.')
Questo funziona come previsto. Se rimuovo event.ignore()
l'applicazione si chiude come previsto, tutto va bene.
Voglio controllare anche l'evento di minimizzazione, quindi quando l'utente fa clic sul pulsante di riduzione a icona sulla barra del titolo, voglio spostare la finestra anziché ridurre a icona. non posso utilizzare la funzione virtuale hideEvent
, perché l'evento verrà inviato alla finestra comunque, quindi questo codice:
def hideEvent(self, event):
event.ignore()
self.move(0,0)
sposta la finestra in alto a sinistra e poi ridurlo. event.ignore()
non ha alcun effetto qui, quindi ho provato ad utilizzare QtCore.QObject.event
questo modo:
def event(self, event):
if event.type() == QEvent.WindowStateChange:
if self.isMinimized():
event.ignore()
self.move(0,0)
return True
return False
La finestra si muove, ma minimizza nuovo. Cosa c'è di sbagliato in questo? Come posso ignorare completamente l'evento di minimizzazione?
Se corro questo, il titolo della finestra rimane sulla barra delle applicazioni. Quando faccio clic su quello MyWindow sarà grigio e vuoto. strano. Se cambio 'self.hide()' a self.move(), la minimizzazione continua anche dopo lo spostamento. :( – kissgyorgy
@Walkman Checkout my [risposta aggiornata] (http://stackoverflow.com/a/16048802/1006989), l'ho aggiornato per modificare il comportamento sull'evento minimizzato –
stesso effetto, comportamento strano. barra delle applicazioni, e quando provo a 'self.move (0,0)' si sposta E minimizza di nuovo.Ho aggiornato la mia domanda, forse è più chiaro quello che voglio. – kissgyorgy