一、效果:
程序关闭后,程序并没有退出,而是放入了托盘中;点击恢复原始大小,或者双击托盘图标,可以恢复程序原来的窗口。如下图。

那qt是如何实现这样的办法呢,其实就是用到了 QSystemTrayIcon类,通常有两种方法去写,第一种比较简单,直接利用QSystemTrayIcon ,来达到一些基本的托盘程序,也是本文章要讲的。第二种是继承QSystemTrayIcon类,这样子类设计可以使得托盘程序更加功能强大,接下来给大家讲解简单的托盘。
二、主要代码
重写了closeEvent()函数,我们点击关闭按钮时候执行了里面的closeEvent()函数hide(),这样窗口就不会关闭了。托盘菜单的退出才是真的调用quit()关闭整个程序。直接在窗口类中增加以下代码:
.h头文件增加:
/////////////////////////////////////////////////////
//托盘相关开始,添加成员及成员函数
/////////////////////////////////////////////////////
private:
QMenu *trayMenu;//托盘菜单
QSystemTrayIcon *tray;//托盘图标添加成员
void InitTray();
protected:
void closeEvent(QCloseEvent *event);// 重写申明
void hideEvent(QHideEvent *event);// 重写申明
private slots:
void iconActivated(QSystemTrayIcon::ActivationReason ireason);
/////////////////////////////////////////////////////
//托盘相关结束
/////////////////////////////////////////////////////
.cpp实现文件增加
/////////////////////////////////////////////////////
//托盘相关开始,添加成员及成员函数
/////////////////////////////////////////////////////
//构造函数初始化
void DlgStudent::InitTray()
{
//***托盘***
tray= new QSystemTrayIcon(this);//初始化托盘对象tray
//tray->setIcon(QIcon(QPixmap(":/images/logo.ico")));//设定托盘图标,引号内是自定义的png图片路径
//tray->setIcon(QIcon(":/images/logo.ico"));//设定托盘图标,引号内是自定义的png图片路径
tray->setIcon(qApp->windowIcon());//设定托盘图标,引号内是自定义的png图片路径
tray->setToolTip(qApp->applicationName());//托盘时鼠标悬停提示文字
QString title="上机提示";
QString text="请填写并提交上机信息";
tray->show();//让托盘图标显示在系统托盘上
tray->showMessage(title,text,QSystemTrayIcon::Information,3000); //最后一个参数为提示时长,默认10000,即10s
//创建菜单项动作
QAction* minimizeAction = new QAction("窗口最小化", this);
connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
QAction* maximizeAction = new QAction("窗口最大化", this);
connect(maximizeAction, SIGNAL

最低0.47元/天 解锁文章
2401






