系统托盘--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的登录,打开软件,界面与托盘同时出现;当登录成功,登录界面隐藏(没做服务界面,故将登录隐藏,以便与托盘交流);右击托盘菜单,可点击恢复功能将登录页面显示出来,若此时关闭页面可看到右下角气泡信息。
结束语
生活处处可见代码的优雅,趣味。