日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt程序窗口关闭不退出而最小化到托盘的方法

發(fā)布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt程序窗口关闭不退出而最小化到托盘的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、描述

為避免錯點(diǎn)關(guān)閉按鈕,使得軟件關(guān)閉退出。需要開發(fā)一種類似于QQ桌面之類的功能,點(diǎn)擊關(guān)閉按鈕并不退出,開發(fā)的應(yīng)用程序在用戶鼠標(biāo)點(diǎn)擊右上角的關(guān)閉按鈕時,程序不退出,縮小到右下角,進(jìn)入托盤。例如win10右下角的圖標(biāo)。

?

二、思路

1、需要對應(yīng)用軟件程序窗口的關(guān)閉按鈕進(jìn)行事件攔截,然后重載,用到QT的QDesktopServices類。

2、要使程序進(jìn)入托盤,需要用到QT的QSystemTrayIcon類。

?

三、方法

1、添加頭文件和成員

?? ?mainwindow.h?頭文件中添加:#include <QSystemTrayIcon> //t托盤類#include <QDesktopServices> //桌面事件類private:?QMenu *trayMenu;//托盤菜單QSystemTrayIcon *tray;//托盤圖標(biāo)添加成員

2、構(gòu)造函數(shù)初始化??

?? //***托盤***tray= new QSystemTrayIcon(this);//初始化托盤對象traytray->setIcon(QIcon(QPixmap(":/image/image/icon_48px.png")));//設(shè)定托盤圖標(biāo),引號內(nèi)是自定義的png圖片路徑tray->setToolTip("My helper"); //提示文字QString title="APP Message";QString text="My helper start up";tray->show();//讓托盤圖標(biāo)顯示在系統(tǒng)托盤上tray->showMessage(title,text,QSystemTrayIcon::Information,3000); //最后一個參數(shù)為提示時長,默認(rèn)10000,即10s//創(chuàng)建菜單項(xiàng)動作minimizeAction = new QAction("MinWin", this);connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide())); maximizeAction = new QAction("MaxWin", this);connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()))restoreAction = new QAction("restore", this);connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));quitAction = new QAction("exit", this);connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); //關(guān)閉應(yīng)用//創(chuàng)建托盤菜單trayMenu = new QMenu(this);trayMenu->addAction(minimizeAction);trayMenu->addAction(maximizeAction);trayMenu->addAction(restoreAction);trayMenu->addSeparator();trayMenu->addAction(quitAction);tray->setContextMenu(trayMenu);connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));

3、添加槽函數(shù)??

void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason ireason) {switch (ireason){case QSystemTrayIcon::Trigger:this->showNormal();break;case QSystemTrayIcon::DoubleClick:this->showNormal();break;case QSystemTrayIcon::MiddleClick:break;default:break;} }

4、攔截桌面窗口事件

void MainWindow::closeEvent(QCloseEvent *event) {if(tray->isVisible()){hide(); //隱藏窗口event->ignore(); //忽略事件} } void MainWindow::hideEvent(QHideEvent *event) {if(tray->isVisible()){hide(); //隱藏窗口event->ignore(); //忽略事件} }

?

總結(jié)

以上是生活随笔為你收集整理的Qt程序窗口关闭不退出而最小化到托盘的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。