Qt 數(shù)據(jù)服務(wù)器、協(xié)議轉(zhuǎn)換、系統(tǒng)托盤模塊、CAN總線模塊、反射內(nèi)存卡模塊

      網(wǎng)友投稿 642 2025-03-31

      簡單介紹

      這個程序也不怎么復(fù)雜,就則一個界面,核心功能呢就是提供反射內(nèi)存卡和CAN采集卡數(shù)據(jù)交互,其他的沒有了。

      今天主要是實現(xiàn)了這個程序啟動以后最小化到系統(tǒng)托盤,在系統(tǒng)托盤的圖標(biāo)上面加上顯示主界面選線和退出選項,如下圖:

      第一版本

      首先需要包含的頭文件:

      #include //操作系統(tǒng)托盤操作類

      #include

      #include

      需要定義的變量:

      QSystemTrayIcon *m_trayIcon = nullptr; //系統(tǒng)托盤類

      QMenu *m_trayIconMenu = nullptr; //系統(tǒng)托盤菜單

      QAction *m_showWindowAction = nullptr;

      QAction *m_exitAppAction = nullptr;

      實現(xiàn):

      /*

      * 設(shè)置系統(tǒng)托盤內(nèi)容

      */

      m_trayIcon = new QSystemTrayIcon(this);

      m_trayIcon->setIcon(QIcon(":/Images/logo.ico"));

      m_trayIcon->setToolTip("DateServer");

      m_trayIcon->show();

      /*

      * 創(chuàng)建兩個Action

      */

      m_showWindowAction = new QAction(QIcon(":/Images/logo.ico"),"顯示界面",this);

      connect(m_showWindowAction,&QAction::triggered,this,[=](){

      this->show();

      });

      m_exitAppAction = new QAction(QIcon(":/Images/exit.ico"),"退出程序",this);

      connect(m_exitAppAction,&QAction::triggered,this,[=](){

      this->close();

      });

      /*

      * 創(chuàng)建菜單

      */

      m_trayIconMenu = new QMenu(this);

      m_trayIconMenu->addAction(m_showWindowAction);

      m_trayIconMenu->addSeparator();

      m_trayIconMenu->addAction(m_exitAppAction);

      m_trayIcon->setContextMenu(m_trayIconMenu);

      connect(m_trayIcon,&QSystemTrayIcon::activated,this,[=](QSystemTrayIcon::ActivationReason temp){

      switch (temp) {

      case QSystemTrayIcon::Trigger:

      {

      //單擊圖標(biāo)時間

      break;

      }

      case QSystemTrayIcon::DoubleClick:

      {

      Qt 數(shù)據(jù)服務(wù)器、協(xié)議轉(zhuǎn)換、系統(tǒng)托盤模塊、CAN總線模塊、反射內(nèi)存卡模塊

      if(this->isHidden())

      {

      this->show();

      }

      else

      {

      this->hide();

      }

      break;

      }

      }

      });

      這么寫是沒有問題的,功能全部可以實現(xiàn),但是你,這樣寫現(xiàn)實我沒有水平呀,所有內(nèi)容都放在了構(gòu)造函數(shù)里面,顯得我的構(gòu)造函數(shù)有點太長了,在加上我的這智商,只有一個函數(shù)不能同時現(xiàn)實出來,那就理解有困難呀,所以,還是給他們分分家比較好。

      第二版本:

      頭文件新增內(nèi)容:

      void initMySystemTrayIcon();

      void initMySystemTrayIconAction();

      void initMySystemTrayIconMenu();

      新增3個函數(shù)聲明,分別用來初始化系統(tǒng)托盤、創(chuàng)建操作時間Action和創(chuàng)建菜單。

      源文件實現(xiàn):

      void MainWindow::initMySystemTrayIcon()

      {

      /*

      * 設(shè)置系統(tǒng)托盤內(nèi)容

      */

      m_trayIcon = new QSystemTrayIcon(this);

      m_trayIcon->setIcon(QIcon(":/Images/logo.ico"));

      m_trayIcon->setToolTip("DateServer");

      m_trayIcon->show();

      connect(m_trayIcon,&QSystemTrayIcon::activated,this,[=](QSystemTrayIcon::ActivationReason temp){

      switch (temp) {

      case QSystemTrayIcon::Trigger:

      {

      //單擊圖標(biāo)時間

      break;

      }

      case QSystemTrayIcon::DoubleClick:

      {

      if(this->isHidden())

      {

      this->show();

      }

      else

      {

      this->hide();

      }

      break;

      }

      }

      });

      initMySystemTrayIconAction();

      initMySystemTrayIconMenu();

      m_trayIcon->showMessage("Tip","DataServer is running",QSystemTrayIcon::Information,5000);

      }

      void MainWindow::initMySystemTrayIconAction()

      {

      /*

      * 創(chuàng)建兩個Action

      */

      m_showWindowAction = new QAction(QIcon(":/Images/logo.ico"),"顯示界面",this);

      connect(m_showWindowAction,&QAction::triggered,this,[=](){

      this->show();

      });

      m_exitAppAction = new QAction(QIcon(":/Images/exit.ico"),"退出程序",this);

      connect(m_exitAppAction,&QAction::triggered,this,[=](){

      this->close();

      });

      }

      void MainWindow::initMySystemTrayIconMenu()

      {

      /*

      * 創(chuàng)建菜單

      */

      m_trayIconMenu = new QMenu(this);

      m_trayIconMenu->addAction(m_showWindowAction);

      m_trayIconMenu->addSeparator();

      m_trayIconMenu->addAction(m_exitAppAction);

      m_trayIcon->setContextMenu(m_trayIconMenu);

      }

      QSystemTrayIcon:

      以上就是今天系統(tǒng)托盤的內(nèi)容,今天的知識點主要就是“QSystemTrayIcon”??聪鹿俜降拿枋觯?/p>

      “Modern operating systems usually provide a special area on the desktop, called the system tray or notification area, where long-running applications can display icons and short messages.”

      大致翻譯呢,就是現(xiàn)在操作系統(tǒng)通常會提在桌面上提供一個特殊的區(qū)域,我們把這個區(qū)域稱為系統(tǒng)托盤或通知區(qū)域,長期運行的應(yīng)用程序可以在這里顯示圖標(biāo)和信息。

      對這個類更詳細(xì)的內(nèi)容,大家可以自行百度“QSystemTrayIcon”或直接在Qt的幫助文檔中查找該類即可。

      解決托盤欄消息不彈出問題:

      中間有個小插曲,我看發(fā)現(xiàn)我在啟動了托盤類ShowMessage()這個函數(shù)的時候,電腦沒有任何反應(yīng),我還以為是我的代碼問題,或者是win10 的版本問題(專業(yè)工作站版本),原來毛病出自這里

      折騰一下午,同時還要注意一個地方:

      這里有可能也會阻止通知信息的彈出。

      Qt TCP/IP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:在線自定義表單(自定義表單軟件
      下一篇:cad為什么表格里內(nèi)容刪了還是有最底下一層
      相關(guān)文章
      久久青草亚洲AV无码麻豆| 亚洲欧洲日产国码久在线| 中文字幕亚洲码在线| 午夜亚洲AV日韩AV无码大全| 色天使亚洲综合一区二区| 国产亚洲sss在线播放| 亚洲日本中文字幕区| 亚洲国产天堂久久久久久| 亚洲国产精品日韩av不卡在线| 亚洲麻豆精品果冻传媒| 亚洲av日韩综合一区在线观看| 亚洲午夜未满十八勿入网站2| 另类小说亚洲色图| 亚洲国产成人精品久久久国产成人一区二区三区综| 学生妹亚洲一区二区| 456亚洲人成在线播放网站| 在线a亚洲老鸭窝天堂av高清| 国产精品亚洲片在线va| 亚洲偷偷自拍高清| 在线综合亚洲中文精品| 国产 亚洲 中文在线 字幕| 伊人久久五月丁香综合中文亚洲 | 亚洲最大福利视频网站| 亚洲成av人影院| 国产亚洲一区二区三区在线观看 | 亚洲成a人片在线观看播放| 亚洲精品**中文毛片| 亚洲人成网网址在线看| 亚洲偷偷自拍高清| 国产精品国产亚洲区艳妇糸列短篇| 国产精品亚洲精品久久精品 | 中文字幕亚洲综合小综合在线| 亚洲日本一线产区和二线产区对比| 亚洲中文字幕一区精品自拍| 亚洲乱妇老熟女爽到高潮的片| 亚洲日韩国产一区二区三区在线| 亚洲精品无码av中文字幕| 激情无码亚洲一区二区三区| 亚洲爽爽一区二区三区| 亚洲国产精品无码久久SM| 色婷婷亚洲十月十月色天|