• Qt托盘程序


    使用QSystemTrayIcon类可以实现托盘程序。在这里使用QMainWindow做实例:

    mainwindow.h头文件

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 #include <QSystemTrayIcon>
     6 #include <QAction>
     7 #include <QMenu>
     8 #include <QCloseEvent>
     9 
    10 namespace Ui {
    11 class MainWindow;
    12 }
    13 
    14 class MainWindow : public QMainWindow
    15 {
    16     Q_OBJECT
    17 public:
    18     explicit MainWindow(QWidget *parent = 0);
    19     ~MainWindow();
    20 
    21 private:
    22     void closeEvent(QCloseEvent * event);
    23 
    24 private:
    25     Ui::MainWindow *ui;
    26 
    27     QSystemTrayIcon* systemIcon; //系统托盘
    28     QAction* min; //最小化
    29     QAction* max; //最大化
    30     QAction* restore; //还原程序
    31     QAction* quit; //退出程序
    32     QMenu*   menu; //托盘程序的右键目录
    33 };
    34 
    35 #endif // MAINWINDOW_H

    mainwindow.cpp 源文件

     1 #include <QString>
     2 #include "mainwindow.h"
     3 #include "ui_mainwindow.h"
     4 
     5 MainWindow::MainWindow(QWidget *parent) :
     6     QMainWindow(parent),
     7     ui(new Ui::MainWindow)
     8 {
     9     ui->setupUi(this);
    10 
    11     QIcon icon(":/new/prefix1/images/icon.ico");
    12     systemIcon = new QSystemTrayIcon(this); //托盘程序
    13     systemIcon->setIcon(icon);
    14     systemIcon->setToolTip(QString::fromLocal8Bit("测试托盘程序"));
    15 
    16     //连接托盘菜单功能到槽函数
    17     min = new QAction(QString::fromLocal8Bit("最小化窗口"), this);
    18     connect(min, SIGNAL(triggered()), this, SLOT(hide()));
    19     max = new QAction(QString::fromLocal8Bit("最大化窗口"), this);
    20     connect(max, SIGNAL(triggered()), this, SLOT(showMaximized()));
    21     restore = new QAction(QString::fromLocal8Bit("还原窗口"), this);
    22     connect(restore, SIGNAL(triggered()), this, SLOT(showNormal()));
    23     quit = new QAction(QString::fromLocal8Bit("退出"), this);
    24     connect(quit, SIGNAL(triggered()), qApp, SLOT(quit()));
    25 
    26     menu = new QMenu(this);
    27     menu->addAction(min);
    28     menu->addAction(max);
    29     menu->addAction(restore);
    30     menu->addSeparator();
    31     menu->addAction(quit);
    32     systemIcon->setContextMenu(menu);  //设置托盘程序功能菜单
    33     systemIcon->show();
    34 }
    35 
    36 MainWindow::~MainWindow()
    37 {
    38     delete ui;
    39 }
    40 
    41 void MainWindow::closeEvent(QCloseEvent *event)
    42 {
    43     if(systemIcon->isVisible())
    44     {
    45         hide(); //隐藏主程序
    46         systemIcon->showMessage(QString::fromLocal8Bit("提示"), QString::fromLocal8Bit("测试程序正在后台运行!"));
    47         event->ignore();
    48     }
    49 }
  • 相关阅读:
    Source Insight新建工程文件
    移植3.4.2内核之韦东山笔记
    移植最新u-boot(裁剪和修改默认参数)
    C++与C语言在结构体上的区别
    VIP之Switch
    VIP之CSC
    VIP之Scaler
    VIP之FrameBuffer
    VIP之MixerII
    VIP之Clipper
  • 原文地址:https://www.cnblogs.com/tyche116/p/8682943.html
Copyright © 2020-2023  润新知