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();
}
}
So realisiere ich ein "minimize to tray". Sie können nun minimieren, indem Sie entweder auf das Symbol doppelklicken oder indem Sie mit der rechten Maustaste klicken und im Menü "Einblenden/Ausblenden" auswählen.
Aus persönlicher Erfahrung habe ich gelernt, dass man in der Regel das nicht wollen. Das Fach ist nicht der Ort für minimierte Anwendungen. Das Tray ist der richtige Ort für Applets, die nach Ereignissen suchen (Bluetooth, Netzwerkstatus, diese Art von Zeugs). Wenn Ihre Anwendung diese Art von Funktionalität enthält, kann es sinnvoll sein, diesen Teil in einem eigenen Prozess zu trennen. Dieser Hilfsprozess erscheint dann immer im Tray und nirgendwo sonst. – MSalters
Einige Benutzer mögen diese Funktionalität jedoch. In meiner Anwendung ist es nicht das Standardverhalten, sondern wird als eine Option im Einstellungsdialog angezeigt. Ich denke, dass diese Art von Waagen korrektes Design und Benutzerpräferenz korrigieren. –