【QT】系统托盘图标
来源:互联网 发布:中企动力java面试 编辑:程序博客网 时间:2024/06/15 20:09
功能实现:
1.主窗口如图,有一LCD显示控件:
2.在系统托盘区域显示有系统托盘图标的Icon。当点击MainWindow窗口右上角的叉叉时,窗口隐藏,程序仍在运行,Icon仍在右下角。
3.右键点击Icon,出现菜单,点击red或green:
4.添加如下代码,即使主窗口隐藏,点击菜单red/green,主动激活主窗口并将LCD颜色改变为red或green
this->activateWindow(); this->showNormal();
5.左键点击或双击Icon,MainWindow回复显示。
6.点击Icon右键菜单的exit,程序退出,Icon消失。
代码实现:
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QtWidgets/QMainWindow>#include <QtWidgets> //QT5区别于QT4的地方:头文件包含QtGui替换成QtWidgetsnamespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private slots: //事件处理函数: void on_actionRed_triggered(); //加入menu中的actionRed LCD数字显示为红色 void on_actionGreen_triggered(); //加入menu中的actionGreen LCD数字显示为绿色 void on_actionExit_triggered(); //加入menu中的actionExit 退出程序 //点击或双击Icon时恢复显示主窗口 void OnSystemTrayClicked(QSystemTrayIcon::ActivationReason); private: Ui::MainWindow *ui;private: QSystemTrayIcon m_systray; //声明一个系统托盘图标类的成员变量 virtual void closeEvent(QCloseEvent *event); //重写closeEvent虚函数, //实现关闭主窗口时退到托盘最小化};#endif // MAINWINDOW_H
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); //事件处理 connect(ui->actionRed,SIGNAL(triggered()),this,SLOT(on_actionRed_triggered())); connect(ui->actionGreen,SIGNAL(triggered()),this,SLOT(on_actionGreen_triggered())); connect(ui->actionExit,SIGNAL(triggered(bool)),this,SLOT(on_actionExit_triggered())); connect(&m_systray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(OnSystemTrayClicked(QSystemTrayIcon::ActivationReason))); //设置提示文字:当鼠标光标移动到icon上,有文字显示 m_systray.setToolTip("this is a system tray icon"); //设置图标 m_systray.setIcon(QIcon("C:/Users/Maggie/Downloads/set.png")); //创建菜单对象,加入action QMenu *menu=new QMenu(); menu->addAction(ui->actionRed); menu->addAction(ui->actionGreen); menu->addAction(ui->actionExit); //为系统托盘图标设置右键菜单 m_systray.setContextMenu(menu); //显示系统托盘图标 m_systray.show();}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_actionRed_triggered() { ui->m_lcd->setPalette(Qt::red); //加入menu中的actionGreen LCD数字显示为红色 this->activateWindow(); this->showNormal();}void MainWindow::on_actionGreen_triggered() { ui->m_lcd->setPalette(Qt::green); //加入menu中的actionGreen LCD数字显示为绿色 this->activateWindow(); this->showNormal();}void MainWindow::on_actionExit_triggered() { QApplication::exit(0); //加入menu中的actionExit 退出程序}void MainWindow::OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason){ if(reason==QSystemTrayIcon::Trigger||reason==QSystemTrayIcon::DoubleClick) { this->showNormal(); //判断点击或双击时,恢复显示主窗口 }}void MainWindow::closeEvent(QCloseEvent *event){ this->hide(); //重写closeEvent虚函数,实现关闭主窗口时退到托盘最小化 event->ignore();}
阅读全文
0 0
- QT 系统托盘图标
- QT 系统托盘图标
- 创建QT系统托盘图标
- QT 系统托盘图标
- QT 系统托盘图标
- 【QT】系统托盘图标
- Qt:系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- Qt之任务栏系统托盘图标
- QT---系统托盘图标不显示原因
- 系统托盘图标
- 系统托盘图标
- 仿微信定位功能
- 设计模式____代理模式(静态代理,动态代理)
- 自己写一个 wsgi 服务器运行 Django 、Tornado 应用
- Mac 终端中上传文件到CentOS
- 解析mysql中max_connections与max_user_connections的区别
- 【QT】系统托盘图标
- vue js入门
- Windows下c++访问hbase(vs2010)
- JS中用var声明变量和不用的区别
- linux下docker 使用2
- 树的遍历 之 已知后序与中序输出先序
- js之事件冒泡和事件捕获
- 创建模式之二 建造者模式
- MySQL