日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Qt 设置系统托盘

發布時間:2025/3/15 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 设置系统托盘的全部內容,希望文章能夠幫你解決所遇到的問題。

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