官术网_书友最值得收藏!

2.5 系統(tǒng)拖盤(pán)圖標(biāo)

在開(kāi)發(fā)系統(tǒng)服務(wù)和軟件的時(shí)候,我們經(jīng)常希望軟件在后臺(tái)或以隱藏的方式運(yùn)行,希望在系統(tǒng)任務(wù)條的拖盤(pán)區(qū)顯示軟件運(yùn)行的狀態(tài)。Qt提供了QSystemTrayIcon類,可以實(shí)現(xiàn)在系統(tǒng)拖盤(pán)區(qū)響應(yīng)用戶的操作。

(1)在頭文件中添加以下代碼,包含QsystemTrayIcon模塊頭文件。

…
//添加以下頭文件
#include<QSystemTrayIcon>
…
//添加QSystemTrayIcon 和被激活的操作
public:
  …
    QSystemTrayIcon * myTrayIcon;
public slots:
    void activated(QSystemTrayIcon::ActivationReason reason);
…

(2)在構(gòu)造函數(shù)中添加以下代碼,設(shè)置系統(tǒng)托盤(pán)圖標(biāo)和操作的關(guān)聯(lián)。

…
//添加包含文件
#include<QSystemTrayIcon>
#include<QIcon>
//在構(gòu)造函數(shù)中添加以下代碼
MainWindow::MainWindow(QWidget *parent):
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    …
    QIcon systemIcon(":/qt-logo.png");
    myTrayIcon=new QSystemTrayIcon(systemIcon,this);
    myTrayIcon->show();
    myTrayIcon->showMessage("提示", "單擊隱藏,雙擊顯示主窗口");
    myTrayIcon->setContextMenu(ui->menu_F);
    connect(myTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason  )),this,
        SLOT(activated(QSystemTrayIcon::ActivationReason  )));
}
…

(3)實(shí)現(xiàn)被激活的操作,這里簡(jiǎn)單地實(shí)現(xiàn)了當(dāng)用戶單擊系統(tǒng)托盤(pán)圖標(biāo)時(shí)顯示或隱藏主窗口。

void MainWindow::activated(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason){
    case QSystemTrayIcon::Trigger:
        this->hide();
        break;
    case QSystemTrayIcon::DoubleClick:
        this->showNormal();
        break;
    default:break;
    }
}

上面代碼中:

① myTrayIcon->showMessage("提示", "單擊隱藏,雙擊顯示主窗口")語(yǔ)句在系統(tǒng)拖盤(pán)增加圖標(biāo)時(shí)顯示提示信息。

② myTrayIcon->setContextMenu(ui->menu_F)語(yǔ)句在用戶右擊時(shí),彈出菜單。

③ activated(QSystemTrayIcon::ActivationReason reason)操作實(shí)現(xiàn)的是單擊隱藏、雙擊顯示的功能。

主站蜘蛛池模板: 法库县| 黄山市| 辉南县| 辉南县| 元谋县| 沈阳市| 万载县| 甘孜| 密云县| 崇明县| 林甸县| 彰武县| 宣城市| 如皋市| 蒙城县| 大安市| 维西| 贵定县| 司法| 潞西市| 永州市| 文登市| 安国市| 东山县| 大同市| 阿克陶县| 长治县| 广州市| 怀仁县| 红原县| 乌兰浩特市| 东港市| 仁怀市| 鄄城县| 麻江县| 扎赉特旗| 伊宁市| 周宁县| 南和县| 九台市| 成武县|