失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux系统如何用qt实现托盘 【linux】【qt5界面】【系统托盘图标的实现】

linux系统如何用qt实现托盘 【linux】【qt5界面】【系统托盘图标的实现】

时间:2020-03-30 16:51:19

相关推荐

linux系统如何用qt实现托盘 【linux】【qt5界面】【系统托盘图标的实现】

前言:

博主最近在做一个聊天软件,虽然技术不咋滴,但遇到点干货肯定是要跟大家分享的啦。下面就给大家分享一个qt实现程序隐藏才系统托盘的技巧。

装备:

系统:linux,

qt版本:5.9.2,GCC:4.9.3.

1.头文件声明:

QSystemTrayIcon *mSysTrayIcon; //记得头文件

void on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason);//槽函数的声明

2.窗口初始化时创建托盘对象:

//新建QSystemTrayIcon对象

mSysTrayIcon = new QSystemTrayIcon(this);

//新建托盘要显示的icon

QIcon icon = QIcon(":/new/images/im_icon.png");

//将icon设到QSystemTrayIcon对象中

mSysTrayIcon->setIcon(icon);

//当鼠标移动到托盘上的图标时,会显示此处设置的内容

mSysTrayIcon->setToolTip(QObject::trUtf8("xxx客户端"));

//给QSystemTrayIcon添加槽函数

connect(mSysTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason)));

//在系统托盘显示此对象

mSysTrayIcon->show();

3.槽函数实现点击事件。

//系统托盘功能

void ocswk::on_activatedSysTrayIcon(QSystemTrayIcon::ActivationReason reason)

{

switch(reason){

case QSystemTrayIcon::Trigger:

//单击托盘图标,显示窗体

this->show();

break;

case QSystemTrayIcon::DoubleClick:

//双击托盘图标

//双击后显示主程序窗口

QMessageBox::information(this,"xxx", "xxxxxx");

break;

default://还有个右键事件没写。

break;

}

}

4.体现图标作用:决定是否退出程序或缩小图标

// closeEvents

void ocswk::closeEvent(QCloseEvent *event)

{

QMessageBox button(QMessageBox::Warning, QString(tr("退出程序")),QString(tr("确认退出程序!")));

button.setStandardButtons (QMessageBox::Yes|QMessageBox::No);

button.setSizeIncrement(250,120);

button.setButtonText (QMessageBox::Yes,QString("确定退出"));

button.setButtonText (QMessageBox::No,QString("缩小托盘"));

if(button.exec() != QMessageBox::Yes)

{

this->hide();

event->ignore();

}else{

event->accept();

}

}

5.图标抖动:来消息图标抖动事件还没完成(其实俺也不会啊),等后续更新吧。

如果觉得《linux系统如何用qt实现托盘 【linux】【qt5界面】【系统托盘图标的实现】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。