介绍一下如何给Qt程序做一个系统托盘
简单介绍
开始制作
添加托盘
使用到了QSystemTrayIcon类,首先要在.h的private中创建一个:
QSystemTrayIcon *m_sysTrayIcon; //系统托盘然后在cpp中实现
m_sysTrayIcon = new QSystemTrayIcon(this); //新建QSystemTrayIcon对象
QIcon icon = QIcon(":/img/img/logo.png"); //资源文件添加的图标
m_sysTrayIcon->setIcon(icon);这里设置图标要检查一下,如果设置失败的话不会报错,也不会显示托盘
接着,就可以给托盘图标添加事件了
connect(m_sysTrayIcon, &QSystemTrayIcon::activated, //给QSystemTrayIcon添加槽函数
[=](QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
case QSystemTrayIcon::Trigger: //单击托盘图标
//单击事件
break;
case QSystemTrayIcon::DoubleClick: //双击托盘图标
//双击事件
break;
default:
break;
}
});添加托盘菜单
也就是右击托盘图标会显示的菜单,使用到了QMenu,先.h中创建:
QMenu *m_menu; //菜单然后再cpp中实现
m_menu = new QMenu(this);
m_sysTrayIcon->setContextMenu(m_menu); //把QMenu赋给QSystemTrayIcon对象添加菜单项
我们有了菜单,但是菜单里没东西是不行的,使用QAction来添加动作,这里做一个显示主界面和退出程序的示例。
还是一样.h中添加:
QAction *m_showMainAction; //显示主界面
QAction *m_exitAppAction; //退出程序然后在上面的QMenu赋值到Icon前,加入
m_showMainAction = new QAction("主界面", this);
m_exitAppAction = new QAction("退出", this);
m_menu->addAction(m_showMainAction); //新增菜单项---显示主界面
m_menu->addAction(m_exitAppAction); //新增菜单项---退出程序当然我们有了按钮还不行,还要给按钮添加事件
private slots中添加:
void on_showMainAction(); //打开主界面
void on_exitAppAction(); //退出程序记得实现
//托盘主界面
void MainWindow::on_showMainAction()
{
this->show();
}
//托盘推出
void MainWindow::on_exitAppAction()
{
qApp->exit();
}当然,还要连接一下信号和槽
connect(m_showMainAction,SIGNAL(triggered()),this,SLOT(on_showMainAction()));
connect(m_exitAppAction,SIGNAL(triggered()),this,SLOT(on_exitAppAction()));
还没有评论
欢迎留下你的观点,保持交流的清晰和友好。
写下评论
请先使用 GitHub 登录,之后就可以评论。