Qt實現系統托盤,qt實現托盤

來源:互聯網
上載者:User

Qt實現系統托盤,qt實現托盤

        平時大多數看到的軟體都是帶系統托盤的,這樣軟體可以在後台運行,挺好的。今天看了下Qt內建的demon,中間有參考了下,實現了這個小小的功能,就將這個功能添加到了自己之前的一個項目中,效果蠻好的。介面如下所示:


右擊系統托盤就會顯示當前設定的各個菜單功能:

怎麼樣,效果還好吧。實現這個小功能廳滿意的。右鍵點擊彈出的菜單可以自行設定所需的。另外可以設定按一下滑鼠、雙擊、中間鍵分別按下時所觸發的動作。主要代碼如下所示:

1、首先需要添加標頭檔,Qsystem/trayIcon類、QMenu類和QAction三個類

<span style="font-size:18px;"><strong>    QSystemTrayIcon *myTrayIcon;                                  //系統托盤指標    QMenu *myMenu;                                                //系統托盤菜單    QAction *miniSizeAction;                                      //最小化    QAction *maxSizeAction;                                       //最大化    QAction *restoreWinAction;                                    //還原    QAction *quitAction;                                          //退出    QAction *checkUpdate;                                         //檢查更新</strong></span>

功能功能實現:

<span style="font-size:18px;"><strong>/* *函數功能:建立系統托盤菜單 *輸入參數:無 *輸出參數:無 *說明:此函數用於建立系統托盤的菜單,提供使用者點擊相應的菜單進行操作*/void MainWindow::CreateTrayMenu(){    miniSizeAction = new QAction(tr("最小化(&N)"),this);    miniSizeAction->setToolTip(tr("最小化"));    miniSizeAction->setIcon(QIcon(":/images/systemtrayico/minac.png"));    maxSizeAction = new QAction(tr("最大化(&X)"),this);    maxSizeAction->setToolTip(tr("最大化"));    maxSizeAction->setIcon(QIcon(":/images/systemtrayico/maxac.png"));    restoreWinAction = new QAction(tr("還原(&R)"),this);    restoreWinAction->setToolTip(tr("還原"));    restoreWinAction->setIcon(QIcon(":/images/systemtrayico/restoreac.png"));    quitAction = new QAction(tr("退出(&Q)"),this);    quitAction->setToolTip(tr("退出"));    quitAction->setIcon(QIcon(":/images/systemtrayico/exitac.png"));    checkUpdate = new QAction(tr("檢查更新(&C)"),this);    checkUpdate->setToolTip(tr("檢查更新"));    checkUpdate->setIcon(QIcon(":/images/systemtrayico/updateac.png"));    //將各個菜單進行槽串連,觸發相應的動作    connect(miniSizeAction,SIGNAL(triggered()),this,SLOT(hide()));    connect(maxSizeAction,SIGNAL(triggered()),this,SLOT(showMaximized()));    connect(restoreWinAction,SIGNAL(triggered()),this,SLOT(showNormal()));    connect(quitAction,SIGNAL(triggered()),this,SLOT(logoutWidget()));    connect(checkUpdate,SIGNAL(triggered()),this,SLOT(checkSysUpdate()));    //將建立的菜單對象添加到系統托盤的菜單中    myMenu = new QMenu((QWidget*)QApplication::desktop());    myMenu->addAction(miniSizeAction);    myMenu->addAction(maxSizeAction);    myMenu->addAction(restoreWinAction);    myMenu->addSeparator();    myMenu->addAction(checkUpdate);    myMenu->addSeparator();                 //加入一個分隔字元    myMenu->addAction(quitAction);}/* *函數功能:建立軟體最小化時的系統表徵圖以及一些資訊的顯示 *說明:對系統是否支援系統圖盤表徵圖特效作出判斷,支援就執行相應的動作*/void MainWindow::CreateTrayIcon(){    CreateTrayMenu();    //判斷系統是否支援系統托盤表徵圖    if(!QSystemTrayIcon::isSystemTrayAvailable())    {        return;    }    myTrayIcon = new QSystemTrayIcon(this);    myTrayIcon->setIcon(QIcon(":/images/main.png"));    myTrayIcon->setToolTip(tr("福士超市收銀系統 V2.0"));    myTrayIcon->showMessage("福士軟體","軟體進入了最小化模式,若想恢複,點擊還原",QSystemTrayIcon::Information,10000);    myTrayIcon->setContextMenu(myMenu);    myTrayIcon->show();    connect(myTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconAcitvated(QSystemTrayIcon::ActivationReason)));}</strong></span>

滑鼠點擊事件處理:

<span style="font-size:18px;"><strong>/* *函數功能:執行滑鼠點擊系統托盤菜單後相應的動作 *說明:當滑鼠點擊菜單時所觸發的動作 *     (左、右)單擊、雙擊、中間按鈕。可以對這幾個動作分別處理相應的事件*/void MainWindow::iconAcitvated(QSystemTrayIcon::ActivationReason reason){    switch(reason)    {    case QSystemTrayIcon::Trigger:        this->showNormal();        break;    case QSystemTrayIcon::DoubleClick:        this->showMaximized();        break;    case QSystemTrayIcon::MiddleClick:        //        break;    default:        break;    }}</strong></span>

基本代碼就這些。

需要代碼的可以留下郵箱,發給你們……

技術在於交流……



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.