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();
}
}
इस तरह मैं "ट्रे को कम करने" का एहसास करता हूं। अब आप आइकन पर डबल क्लिक करके, या राइट-क्लिक करके और मेनू में "दिखाएँ/छुपाएं" चुनकर कम कर सकते हैं।
व्यक्तिगत अनुभव से मैंने सीखा है कि आप आमतौर पर यह नहीं चाहता। ट्रे कम से कम अनुप्रयोगों के लिए जगह नहीं है। ट्रे _is_ एप्लेट्स के लिए सही जगह है जो ईवेंट (ब्लूटूथ, नेटवर्क स्थिति, उस तरह की चीजें) के लिए देखती है। यदि आपके एप्लिकेशन में उस तरह की कार्यक्षमता है, तो उस भाग को अपनी प्रक्रिया में विभाजित करना बुद्धिमान हो सकता है। यह सहायक प्रक्रिया हमेशा ट्रे में दिखाई देगी, और कहीं और नहीं। – MSalters
हालांकि कुछ उपयोगकर्ता इस कार्यक्षमता को पसंद करते हैं। मेरे आवेदन में, यह डिफ़ॉल्ट व्यवहार नहीं है, लेकिन प्राथमिकता संवाद में एक विकल्प के रूप में प्रस्तुत किया जाता है। मुझे लगता है कि इस तरह के संतुलन सही डिजाइन और उपयोगकर्ता वरीयता संतुलन। –