systemtrayicon.cpp
SystemTrayIcon::SystemTrayIcon(QObject *parent) :
QSystemTrayIcon(parent)
{
createTrayMenu();
createTrayIcon();
}
void SystemTrayIcon::createTrayMenu()
{
restoreWinAction = new QAction("主面板(&R)",this);
lockAction = new QAction("锁定(&L)", this);
quitAction = new QAction("退出(&Q)",this);
myMenu = new QMenu((QWidget*)QApplication::desktop());
myMenu->addAction(restoreWinAction);
myMenu->addSeparator(); //加入一个分离符
myMenu->addAction(lockAction);
myMenu->addSeparator(); //加入一个分离符
myMenu->addAction(quitAction);
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
}
void SystemTrayIcon::createTrayIcon()
{
if (!QSystemTrayIcon::isSystemTrayAvailable()) //判断系统是否支持系统托盘图标
{
return;
}
setIcon(QIcon(":/images/qt.png")); //设置图标图片
setToolTip("SystemTrayIcon V1.0"); //托盘时,鼠标放上去的提示信息
setContextMenu(myMenu); //设置托盘上下文菜单
}
widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
systemTrayIcon = new SystemTrayIcon(this);
systemTrayIcon->show();
systemTrayIcon->showMessage("SystemTrayIcon","Hi,This is my trayIcon",QSystemTrayIcon::Information,10000);
connect(systemTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::closeEvent(QCloseEvent *event)
{
if ( systemTrayIcon != NULL && systemTrayIcon->isVisible())
{
systemTrayIcon->showMessage("SystemTrayIcon","Hi,This is my trayIcon",QSystemTrayIcon::Information,5000);
hide();
event->ignore();
}
else
event->accept();
}
void Widget::iconActivated(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
case QSystemTrayIcon::Trigger | QSystemTrayIcon::DoubleClick:
showNormal();
break;
case QSystemTrayIcon::MiddleClick:
systemTrayIcon->showMessage("SystemTrayIcon","Hi,This is my trayIcon",QSystemTrayIcon::Information,10000);
break;
default:
break;
}
}