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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Qt 设置系统托盘

發布時間:2025/3/15 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 设置系统托盘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt 設置系統托盤

開發工具與關鍵技術:QtCreator、C++ 作者:何任賢 撰寫時間:2019年05月15日 Qt實現系統托盤,我們知道大多數軟件都是可以在系統托盤中放著,例如QQ之類的軟件。那么系統托盤如何實現。

這是系統托盤頭文件
#include

下面是代碼
構造函數
MainWindow::MainWindow()
{
tuopanMenu();
QIcon icon = QIcon(":/image/info.ico");

trayIcon-> show (); trayIcon->setIcon(icon); setWindowIcon(icon);

}

析構函數
我們在關閉程序之后需要手動釋放一下系統托盤,不然會導致系統托盤在程序關閉后還有系統托盤圖標在系統托盤里,需要把鼠標移上去才消失。
MainWindow::~MainWindow()
{
delete trayIcon;
}

系統托盤的創建
trayIcon = new QSystemTrayIcon;的時候系統托盤就已經創建好了,但是系統托盤默認是hide,所以我在主函數那讓它show,這時系統托盤是什么都沒有的,就連系統托盤的圖標也是沒有的,所以我們設置它的圖標,系統托盤的菜單欄也是空的,我們要準備一個菜單欄樣式,然后用setContextMenu()函數引入菜單欄。
void MainWindow::tuopanMenu()
{
quitAction = new QAction(tr(“退出”));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
trayIcon = new QSystemTrayIcon;
tuopangMenu = new QMenu;
tuopangMenu->addAction(quitAction);
trayIcon->setContextMenu(tuopangMenu);
}

這是必須重寫的函數,這是程序關閉時觸發的函數,重寫該函數使程序最小

化到系統托盤,而并不是關閉當前函數,這是把窗口隱藏掉。
event->ignore()函數用來忽略事件,以防止該事件繼續傳遞。
void MainWindow::closeEvent(QCloseEvent *event)
{
if(trayIcon->isVisible())
{
QMessageBox::information(this,tr(“系統托盤”),
tr(“程序將會繼續在系統托盤中運行。若要結束程序,請在托盤的菜單中選擇退出選項。”));
hide();
event->ignore();
}
}
這是不設置系統托盤圖標的截圖


這是我們沒有在析構函數釋放我們創建的系統托盤,就會和下圖一樣程序關閉了但是系統托盤的圖標還在的情況

這是系統托盤菜單截圖,如果不設置系統托盤菜單是不會有菜單的。

總結

以上是生活随笔為你收集整理的Qt 设置系统托盘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。