Codice aiuta, quindi ecco qualcosa che ho scritto per un'applicazione, fatta eccezione per closeEvent invece di minimizzare l'evento.
Note:
"CloseEvent (evento)" è un evento override Qt, quindi deve essere messo nella classe che implementa la finestra che si desidera nascondere.
"okayToClose()" è una funzione che si potrebbe considerare l'implementazione (o un flag booleano che si desidera memorizzare) poiché a volte si desidera effettivamente uscire dall'applicazione anziché ridurla a systray.
C'è anche un esempio di come mostrare() di nuovo la finestra.
def __init__(self):
traySignal = "activated(QSystemTrayIcon::ActivationReason)"
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL(traySignal), self.__icon_activated)
def closeEvent(self, event):
if self.okayToClose():
#user asked for exit
self.trayIcon.hide()
event.accept()
else:
#"minimize"
self.hide()
self.trayIcon.show() #thanks @mojo
event.ignore()
def __icon_activated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick:
self.show()
fonte
2009-04-16 23:17:59
# "minimizzare" self.hide() self.trayIcon.show() event.ignore() –
ho aggiunto @ suggerimento di mojo di flessibilità nel modo in cui l'icona della barra di sistema viene gestito. Il codice originale proveniva da un'applicazione in cui l'icona del vassoio era sempre visibile, il self.trayIcon.hide() era in modo tale che l'icona non rimaneva nella barra delle applicazioni dopo l'uscita (comportamento tipico delle finestre, purtroppo). Si noti che ora l'utente deve implementare il metodo showEvent (evento) e chiamare self.trayIcon.hide() per completare questo esempio. Dovrei aver appena postato un esempio di minimizzazione/solo ripristino in primo luogo :) –