QT最小化到托盘显示

一、效果:

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

        那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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值