Qt 设置系统托盘
Qt 設置系統托盤
開發工具與關鍵技術:QtCreator、C++ 作者:何任賢 撰寫時間:2019年05月15日 Qt實現系統托盤,我們知道大多數軟件都是可以在系統托盤中放著,例如QQ之類的軟件。那么系統托盤如何實現。這是系統托盤頭文件
#include
下面是代碼
構造函數
MainWindow::MainWindow()
{
tuopanMenu();
QIcon icon = QIcon(":/image/info.ico");
}
析構函數
我們在關閉程序之后需要手動釋放一下系統托盤,不然會導致系統托盤在程序關閉后還有系統托盤圖標在系統托盤里,需要把鼠標移上去才消失。
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();
}
}
這是不設置系統托盤圖標的截圖
這是我們沒有在析構函數釋放我們創建的系統托盤,就會和下圖一樣程序關閉了但是系統托盤的圖標還在的情況
這是系統托盤菜單截圖,如果不設置系統托盤菜單是不會有菜單的。
總結
- 上一篇: 数据导出到Excel
- 下一篇: 向上2021·新消费品牌发展报告