效果
复制可用,代码如下
bool Widget::createTray()
{
if(!QSystemTrayIcon::isSystemTrayAvailable()){
return false;
}
m_tray = new QSystemTrayIcon(this);
m_tray->setIcon(style()->standardIcon(QStyle::SP_TitleBarMenuButton));
m_tray->setToolTip("托盘测试");
m_tray->setVisible(true);
connect(m_tray,&QSystemTrayIcon::activated,[=](QSystemTrayIcon::ActivationReason reason){
if(reason == QSystemTrayIcon::Trigger){
if(QSystemTrayIcon::supportsMessages())
m_tray->showMessage("Qt","学习使我进步",
style()->standardIcon(QStyle::SP_TitleBarMenuButton),2000);
}
if(reason == QSystemTrayIcon::DoubleClick){
this->showNormal();
}
});
m_menu = new QMenu();
QAction * act_desk = new QAction("桌面",this);
act_desk->setIcon(style()->standardIcon(QStyle::SP_DesktopIcon));
QAction * act_info = new QAction("信息",this);
act_info->setIcon(style()->standardIcon(QStyle::SP_MessageBoxInformation));
QAction * act_warning = new QAction("警告",this);
act_warning->setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning));
QAction * act_critical = new QAction("Critical",this);
act_critical->setIcon(style()->standardIcon(QStyle::SP_MessageBoxCritical));
QAction * act_vistashield = new QAction("护盾",this);
act_vistashield->setIcon(style()->standardIcon(QStyle::SP_VistaShield));
QAction * act_volume = new QAction("音量",this);
act_volume->setIcon(style()->standardIcon(QStyle::SP_MediaVolume));
QAction * act_refresh = new QAction("刷新",this);
act_refresh->setIcon(style()->standardIcon(QStyle::SP_BrowserReload));
QAction * act_show = new QAction("显示",this);
act_show->setIcon(style()->standardIcon(QStyle::SP_ComputerIcon));
QAction * act_quit = new QAction("退出",this);
act_quit->setIcon(style()->standardIcon(QStyle::SP_BrowserStop));
m_menu->addAction(act_desk);
m_menu->addAction(act_info);
m_menu->addSeparator();
m_menu->addAction(act_warning);
m_menu->addAction(act_critical);
m_menu->addAction(act_vistashield);
m_menu->addSeparator();
m_menu->addAction(act_volume);
m_menu->addAction(act_refresh);
m_menu->addAction(act_show);
m_menu->addAction(act_quit);
connect(act_show,&QAction::triggered,[=]{
this->showNormal();
});
connect(act_quit,&QAction::triggered,[=]{
this->close();
});
m_tray->setContextMenu(m_menu);
return true;
}