#include "dialog.h"
#include "ui_dialog.h"
#include<QSystemTrayIcon>
#include<QMenu>
#include<QAction>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
mSysTrayIcon=0;
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::createMenu()
{
mMenu = new QMenu(this);
mMenu->addAction(mShowMainAction);
mMenu->addSeparator();
mMenu->addAction(mExitAppAction);
mSysTrayIcon->setContextMenu(mMenu);//右键点击触发上下文菜单
}
void Dialog::createActions()
{
mShowMainAction = new QAction(QObject::trUtf8("显示主界面"),this);
connect(mShowMainAction,SIGNAL(triggered()),this,SLOT(on_showMainAction()));
mExitAppAction = new QAction(QObject::trUtf8("退出"),this);
connect(mExitAppAction,SIGNAL(triggered()),this,SLOT(on_exitAppAction()));
}
void Dialog::on_pushButton_clicked()
{
//隐藏主窗口
this->hide();
//新建QSystemTrayIcon对象
if(!mSysTrayIcon)
{
mSysTrayIcon = new QSystemTrayIcon(this);
//建立托盘操作的菜单
createActions();
createMenu();
}
//新建托盘要显示的icon
QIcon icon = QIcon(":/app.png");
//将icon设到QSystemTrayIcon对象中
mSysTrayIcon->setIcon(icon);
//当鼠标移动到托盘上的图标时,会显示此处设置的内容
mSysTrayIcon->setToolTip(QObject::trUtf8("测试系统托盘图标"));
//给QSystemTrayIcon添加槽函数
connect(mSysTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason)));
//在系统托盘显示此对象
mSysTrayIcon->show();
}
void Dialog::on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
//显示消息球,1s后自动消失
//第一个参数是标题
//第二个参数是消息内容
//第三个参数图标
//第四个参数是超时毫秒数
case QSystemTrayIcon::Trigger://鼠标单击
mSysTrayIcon->showMessage(QObject::trUtf8("Message Title"),
QObject::trUtf8("欢迎使用此程序"),
QSystemTrayIcon::Information,
1000);
break;
case QSystemTrayIcon::DoubleClick://鼠标双击
this->show();
break;
default:
break;
}
}
void Dialog::on_showMainAction()
{
this->show();//显示应用程序对话框
}
void Dialog::on_exitAppAction()
{
exit(0);//退出应用程序
}