二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 行业介绍 » 正文

CentOS下使用Qt实现系统托盘

放大字体  缩小字体 发布日期:2023-02-25 16:16:03    作者:田铧    浏览次数:131
导读

1、创建一个Qt应用程序,并添加Qt Widgets模块。2、在Qt应用程序得主窗口中创建一个QSystemTrayIcon对象:QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);3、设置系统托盘图标:QIcon icon(":/icon.png");trayIcon-setIcon(icon);4、一个QMenu对象,并将其添加到系统托盘图标中:QMenu* trayMenu = new QM

1、创建一个Qt应用程序,并添加Qt Widgets模块。

2、在Qt应用程序得主窗口中创建一个QSystemTrayIcon对象:

QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);

3、设置系统托盘图标:

QIcon icon(":/icon.png");trayIcon->setIcon(icon);

4、一个QMenu对象,并将其添加到系统托盘图标中:

QMenu* trayMenu = new QMenu(this);QAction* quitAction = new QAction(tr("&Quit"), this);connect(quitAction, &QAction::triggered, qApp, &QApplication::quit);trayMenu->addAction(quitAction);trayIcon->setContextMenu(trayMenu);

创建QMenu对象,并添加了QAction对象(退出操作)。使用connect()函数将QAction对象得触发事件(triggered)连接到QApplication得退出事件。

5、在退出应用程序时隐藏系统托盘图标:

void MainWindow::closeEvent(QCloseEvent* event){ if(trayIcon->isVisible()) { hide(); event->ignore(); }}

在这个例子中,我们重写了closeEvent()函数,并在关闭事件中判断系统托盘图标是否可见。如果可见,则隐藏主窗口并忽略关闭事件。

6、显示系统托盘图标:

trayIcon->show();

以下是代码示例:

#include <QApplication>#include <QMainWindow>#include <QSystemTrayIcon>#include <QMenu>class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this); QIcon icon(":/icon.png"); trayIcon->setIcon(icon); QMenu* trayMenu = new QMenu(this); QAction* quitAction = new QAction(tr("&Quit"), this); connect(quitAction, &QAction::triggered, qApp, &QApplication::quit); trayMenu->addAction(quitAction); trayIcon->setContextMenu(trayMenu); trayIcon->show(); }protected: void closeEvent(QCloseEvent* event) override { QSystemTrayIcon* trayIcon = qobject_cast<QSystemTrayIcon*>(sender()); if(trayIcon && trayIcon->isVisible()) { hide(); event->ignore(); } else { QMainWindow::closeEvent(event); } }};

 
(文/田铧)
打赏
免责声明
• 
本文为田铧原创作品•作者: 田铧。欢迎转载,转载请注明原文出处:http://www.udxd.com/kbzx/show-116344.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈