QT—-给程序添加上任务栏托盘小图标和退出

1、关闭程序保持后台

重写关闭事件,忽略点击窗口关闭

void MainWindow::closeEvent(QCloseEvent *event)
{
    // 隐藏窗口,而不是真正关闭
    setVisible(false);

    // 忽略关闭事件,阻止窗口真正关闭
    event->ignore();
}

2、添加任务栏托盘图标

file

创建一个任务链托盘图标,添加上退出和显示的菜单按钮,定义显示的槽函数

// 创建系统托盘图标对象
  QSystemTrayIcon* pSystemTray = new QSystemTrayIcon(&w);

  // 判断系统托盘图标是否创建成功
  if (NULL != pSystemTray) {
    // 设置托盘图标
    pSystemTray->setIcon(QIcon(":/res/totle.svg"));

    // 设置托盘图标的提示信息
    pSystemTray->setToolTip("别坐着了");

    // 显示托盘图标
    pSystemTray->show();
  }

  // ---------- 创建托盘菜单 ----------

  // 创建托盘菜单对象
  auto* trayMenu = new QMenu(&w);

  // 创建“显示面板”菜单项
  auto* showPanelAction = new QAction("显示面板", &w);

  // 连接菜单项的触发信号与主窗口的showPanel槽函数
  QObject::connect(showPanelAction,&QAction::triggered,&w,&MainWindow::showPanel);

  // 将菜单项添加到托盘菜单中
  trayMenu->addAction(showPanelAction);

  // 创建“退出”菜单项
  auto* quitAction = new QAction("退出",&w);

  // 连接菜单项的触发信号与 QApplication 的 quit() 槽函数
  QObject::connect(quitAction,&QAction::triggered,&w,&QApplication::quit);

  // 将菜单项添加到托盘菜单中
  trayMenu->addAction(quitAction);

  // 设置托盘图标的上下文菜单
  pSystemTray->setContextMenu(trayMenu);

  // 显示托盘图标
  pSystemTray->show();

完整代码

main。cpp

#include "mainwindow.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
int main(int argc, char *argv[])
{
  // 创建 Qt 应用程序对象
  QApplication a(argc, argv);

  // 创建主窗口对象
  MainWindow w;

  // ---------- 设置任务栏托盘图标 ----------

  // 创建系统托盘图标对象
  QSystemTrayIcon* pSystemTray = new QSystemTrayIcon(&w);

  // 判断系统托盘图标是否创建成功
  if (NULL != pSystemTray) {
    // 设置托盘图标
    pSystemTray->setIcon(QIcon(":/res/totle.svg"));

    // 设置托盘图标的提示信息
    pSystemTray->setToolTip("别坐着了");

    // 显示托盘图标
    pSystemTray->show();
  }

  // ---------- 创建托盘菜单 ----------

  // 创建托盘菜单对象
  auto* trayMenu = new QMenu(&w);

  // 创建“显示面板”菜单项
  auto* showPanelAction = new QAction("显示面板", &w);

  // 连接菜单项的触发信号与主窗口的showPanel槽函数
  QObject::connect(showPanelAction,&QAction::triggered,&w,&MainWindow::showPanel);

  // 将菜单项添加到托盘菜单中
  trayMenu->addAction(showPanelAction);

  // 创建“退出”菜单项
  auto* quitAction = new QAction("退出",&w);

  // 连接菜单项的触发信号与 QApplication 的 quit() 槽函数
  QObject::connect(quitAction,&QAction::triggered,&w,&QApplication::quit);

  // 将菜单项添加到托盘菜单中
  trayMenu->addAction(quitAction);

  // 设置托盘图标的上下文菜单
  pSystemTray->setContextMenu(trayMenu);

  // 显示托盘图标
  pSystemTray->show();

  // 进入应用程序事件循环
  return a.exec();
}

mainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMessageBox>
#include <QMainWindow>
#include <QCloseEvent>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public slots:
    void showPanel();
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void closeEvent(QCloseEvent *event);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::closeEvent(QCloseEvent *event)
{
    // 隐藏窗口,而不是真正关闭
    setVisible(false);

    // 忽略关闭事件,阻止窗口真正关闭
    event->ignore();
}

void MainWindow::showPanel()
{
    // 显示窗口
    this->show();

    // 将窗口置顶,确保其显示在最前面
    this->raise();
}
如果觉得本文对您有所帮助,可以支持下博主,—分也是缘。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇

超多性价比流量卡,扫码查看

这将关闭于 20