void main_window::create_tray_icon()
{
m_tray_icon = new QSystemTrayIcon(QIcon(":/icon.png"), this);
connect(m_tray_icon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(on_show_hide(QSystemTrayIcon::ActivationReason)));
QAction *quit_action = new QAction("Exit", m_tray_icon);
connect(quit_action, SIGNAL(triggered()), this, SLOT(on_exit()));
QAction *hide_action = new QAction("Show/Hide", m_tray_icon);
connect(hide_action, SIGNAL(triggered()), this, SLOT(on_show_hide()));
QMenu *tray_icon_menu = new QMenu;
tray_icon_menu->addAction(hide_action);
tray_icon_menu->addAction(quit_action);
m_tray_icon->setContextMenu(tray_icon_menu);
m_tray_icon->show();
}
void main_window::on_show_hide(QSystemTrayIcon::ActivationReason reason)
{
if(reason)
{
if(reason != QSystemTrayIcon::DoubleClick)
return;
}
if(isVisible())
{
hide();
}
else
{
show();
raise();
setFocus();
}
}
Ecco come realizzo un "minimizzare al vassoio". Ora puoi ridurre a icona facendo doppio clic sull'icona o facendo clic con il pulsante destro del mouse e selezionando "Mostra/nascondi" nel menu.
Per esperienza personale ho imparato che di solito non si vuole questo. Il vassoio non è il posto ideale per applicazioni ridotte al minimo. Il vassoio _è_ il posto giusto per le applet che guardano gli eventi (Bluetooth, stato della rete, quel genere di cose). Se la tua applicazione contiene quel tipo di funzionalità, potrebbe essere saggio dividere quella parte nel suo stesso processo. Questo processo di aiuto apparirà quindi sempre nel vassoio, e da nessun'altra parte. – MSalters
Alcuni utenti preferiscono questa funzionalità. Nella mia applicazione, non è il comportamento predefinito, ma viene presentato come un'opzione nella finestra di dialogo delle preferenze. Immagino che quel tipo di equilibri corregga il design e le preferenze dell'utente. –