#include "mainwindow.h" #include "ui_mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); m_btnDlg = new Dialog_Button(this); m_scanDlg = new Dialog_Scan(m_btnDlg, this); m_trayIcon = new QSystemTrayIcon(this); m_trayIcon->setIcon(QIcon(":images/image_rsc/png/logo.png")); m_trayIcon->show(); m_trayIcon->setToolTip(tr("HuaGao Scan Tool")); qRegisterMetaType("QSystemTrayIcon::ActivationReason"); connect(m_trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::on_trayActivated); m_scanAction = new QAction(tr("Scan Setting"), this); connect(m_scanAction, &QAction::triggered, this, &MainWindow::on_showScanSettingDlg); m_btnAction = new QAction(tr("Button Setting"), this); connect(m_btnAction, &QAction::triggered, this, &MainWindow::on_showButtonSettingDlg); m_quitAction = new QAction(tr("Exit"), this); connect(m_quitAction, &QAction::triggered, this, &QCoreApplication::quit); //应用程序的退出 //创建菜单,添加菜单项 m_trayIconMenu = new QMenu(this); m_trayIconMenu->addAction(m_scanAction); m_trayIconMenu->addAction(m_btnAction); m_trayIconMenu->addSeparator(); //分割线 m_trayIconMenu->addAction(m_quitAction); //给系统托盘添加右键菜单 m_trayIcon->setContextMenu(m_trayIconMenu); } MainWindow::~MainWindow() { delete m_scanDlg; delete m_btnDlg; delete ui; } void MainWindow::closeEvent(QCloseEvent *e) { if (m_trayIcon->isVisible()) //托盘是显示的 { hide(); // 隐藏主窗口 e->ignore(); //忽略关闭事件,这样才不会关闭程序 } } void MainWindow::on_trayActivated(QSystemTrayIcon::ActivationReason reason) { if (QSystemTrayIcon::Trigger == reason) { } else if (QSystemTrayIcon::DoubleClick == reason) { m_btnDlg->show(); } else if (QSystemTrayIcon::MiddleClick == reason) { } } void MainWindow::on_showScanSettingDlg() { m_scanDlg->show(); } void MainWindow::on_showButtonSettingDlg() { m_btnDlg->show(); }