系统托盘--Qt

前言

Qt中系统托盘被类QSystemTrayIcon封装。在日常中,我们常见的托盘是QQ的小企鹅,在软件使用中,有时候用托盘作为访问软件的入口。所以,下面对QSystemTrayIcon进行简单的介绍,从而拥有基本的概念。

理论介绍

通过帮助文档,我们可以看到QSystemTrayIcon的用法很简单,经常用到的方法也就那么几个:

void setToolTip(const QString &tip)          //设置工具提示
void setIcon(const QIcon &icon)              //设置托盘图标
void setContextMenu(QMenu *menu)     //设置托盘右键菜单
void showMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int millisecondsTimeoutHint = 10000)  //设置托盘气泡信息(槽函数)

代码示例

这个是个特别简单的例子,只实现了带有几个菜单的系统托盘,并在界面关闭时,弹出信息气泡。代码如下:

.h文件

protected:
    void closeEvent(QCloseEvent *);

private:
    Ui::LoginDialog *ui;
    QSystemTrayIcon* sysTray;
    QAction* minAction;
    QAction* maxAction;
    QAction* restAction;
    QAction* quitAction;
    QMenu* contextMenu;

.cpp文件

    //构造函数中
    sysTray=new QSystemTrayIcon(this);
    sysTray->setIcon(QIcon(":/res/head.PNG"));
    sysTray->setToolTip("test system tray icon");

    minAction=new QAction("minimum window",this);
    minAction->setIcon(QIcon(":/res/weather_lightning.png"));
    connect(minAction,SIGNAL(triggered(bool)),this,SLOT(hide()));

    maxAction=new QAction("maximum window",this);
    maxAction->setIcon(QIcon(":/res/weather_rain.png"));
    connect(maxAction,SIGNAL(triggered(bool)),this,SLOT(showMaximized()));

    restAction=new QAction("restore window",this);
    restAction->setIcon(QIcon(":/res/weather_snow.png"));
    connect(restAction,SIGNAL(triggered(bool)),this,SLOT(showNormal()));

    quitAction=new QAction("quit window",this);
    quitAction->setIcon(QIcon(":/res/weather_rain.png"));
    connect(quitAction,SIGNAL(triggered(bool)),qApp,SLOT(quit()));

    contextMenu=new QMenu(this);
    contextMenu->addAction(minAction);
    contextMenu->addAction(maxAction);
    contextMenu->addAction(restAction);
    contextMenu->addAction(quitAction);

    sysTray->setContextMenu(contextMenu);
    sysTray->show();
void LoginDialog::closeEvent(QCloseEvent *e)
{
    if(sysTray->isVisible())
    {
        hide();
        sysTray->showMessage("Tips","The program is running behind!");
        e->ignore();
    }
}

 

 

效果图

这个效果图做的不太好,有个系统没激活的水印,将就看:模拟简陋版QQ的登录,打开软件,界面与托盘同时出现;当登录成功,登录界面隐藏(没做服务界面,故将登录隐藏,以便与托盘交流);右击托盘菜单,可点击恢复功能将登录页面显示出来,若此时关闭页面可看到右下角气泡信息。

结束语


生活处处可见代码的优雅,趣味。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值