<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 【Qt編程】基于Qt的詞典開發系列系統托盤的顯示 本文主要討論Qt中的系統托盤的設置。系統托盤想必大家都不陌生,最常用的就是QQ。系統托盤以簡單、小巧的形式能讓人們較快的打開軟件。廢話不多說,下面開始具體介紹。 ![](https://box.kancloud.cn/2016-01-15_5698c1c8eab8d.jpg) 首先,新建一個Qt Gui項目,類型選擇QMainWindow,類名也選擇默認的mainwindow。這時,**工程項目中就有3個文件(界面文件不用管)**:mainwindow.h mainwindow.cpp main.cpp。然后,**分別修改3個文件如下**: **1、mainwindow.h** ~~~ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QSystemTrayIcon> #include<QMenu> #include<QCloseEvent> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QSystemTrayIcon *trayicon;//將系統托盤及菜單定義為窗口的私有成員 QMenu *trayiconMenu; signals: void exitsignal();//發射程序退出信號 private slots: void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason); void exit();//與退出按鈕對應的槽 protected: void closeEvent(QCloseEvent *event); }; #endif // MAINWINDOW_H ~~~ **2、mainwindow.cpp** ~~~ #include "mainwindow.h" #include "ui_mainwindow.h" #include<QtGui> #include<QEvent> #include<QDebug> #include<QAction> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); trayicon=new QSystemTrayIcon(this); QAction *quit=new QAction(tr("exit"), this); QIcon icon("D:/studytool/Qt/workspace/myTray/tengweitw.jpg");//注意修改這里的圖片目錄 setWindowIcon(icon); // setMinimumSize(200,100);//窗口最大化和最小化一樣大小。所以窗口不能放大也不能縮小 // setMaximumSize(200,100); trayiconMenu=new QMenu(this); trayiconMenu->addAction(quit);//這里可以添加多個菜單 // trayiconMenu->addSeparator(); trayicon->setIcon(icon); trayicon->setToolTip(tr("我愛記單詞")); trayicon->setContextMenu(trayiconMenu); connect(quit,SIGNAL(triggered(bool)),this,SLOT(exit())); connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason))); trayicon->show(); } MainWindow::~MainWindow() { delete ui; } ~~~ ~~~ //下面處理不同情況下,單擊托盤圖標的操作 void MainWindow::onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason) { switch(reason) { //單擊 case QSystemTrayIcon::Trigger: // qDebug()<<this->isEnabled(); //雙擊 // flag=!flag; // case QSystemTrayIcon::DoubleClick: //恢復窗口顯示 if(this->isVisible())//判斷窗口是否可見 { if(this->isMinimized())//窗口是否是最小化 { this->setWindowFlags(Qt::WindowStaysOnTopHint);//置頂 // this->setWindowFlags(Qt::Widget);//取消置頂 this->setWindowState(Qt::WindowActive); this->setGeometry(this->geometry());//使得每次顯示窗口為上次的位置 this->show(); } else this->hide(); } else { this->setWindowFlags(Qt::WindowStaysOnTopHint);//置頂 // this->setWindowFlags(Qt::Widget);//取消置頂 this->setWindowState(Qt::WindowActive); this->setGeometry(this->geometry()); this->show(); } break; default: break; } } void MainWindow::exit() { emit exitsignal(); } void MainWindow::closeEvent(QCloseEvent *event)//處理窗口關閉事件 { if(trayicon->isVisible()) { hide(); this->close(); event->ignore(); } } ~~~ **3、main.cpp** ~~~ #include <QtGui/QApplication> #include "mainwindow.h" #include<QTextCodec> int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//防止中文亂碼 MainWindow w; w.show(); QObject::connect(&w,SIGNAL(exitsignal()),&a,SLOT(quit()));//將退出按鈕與退出函數綁定 return a.exec(); } ~~~ ~~~ 上面程序的主要部分都給了注釋,在這就不一一分析了。運行結果如下: ~~~ ~~~ 1、界面如下(這不是我們關注的地方): ~~~ ![](https://box.kancloud.cn/2016-01-15_5698c1c909587.jpg) ~~~ 2、托盤顯示如下: ~~~ ![](https://box.kancloud.cn/2016-01-15_5698c1c91ba8f.jpg) ~~~ 3、托盤的菜單顯示如下: ~~~ ![](https://box.kancloud.cn/2016-01-15_5698c1c92e1e4.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看