翻譯|使用教程|編輯:龔雪|2024-09-02 11:30:07.927|閱讀 124 次
概述:本文將為大家介紹如何使用Qt Widget小部件如何實現一個系統托盤圖標示例,歡迎下載最新版組件體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt 是目前最先進、最完整的跨平臺C++開發工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用于超過70個行業、數千家企業,支持數百萬設備及應用。
System Tray Icon(系統托盤圖標)示例展示了如何將帶有菜單和彈出消息的圖標添加到桌面環境的系統托盤中。
Qt技術交流群:166830288 歡迎一起進群討論
現代操作系統通常在桌面上提供一個特殊的區域,稱為系統托盤或通知區域,長時間運行的應用程序可以在這里顯示圖標和短消息。
本實例由一個類Window組成,它提供了主應用程序窗口(即系統托盤圖標的編輯器)和相關圖標。
編輯器允許用戶選擇首選圖標以及設置氣球消息的類型和持續時間,用戶還可以編輯消息的標題和正文。最后,編輯器提供了一個復選框,控制圖標是否實際顯示在系統托盤中。
Window類繼承了QWidget:
class Window : public QDialog { Q_OBJECT public: Window(); void setVisible(bool visible) override; protected: void closeEvent(QCloseEvent *event) override; private slots: void setIcon(int index); void iconActivated(QSystemTrayIcon::ActivationReason reason); void showMessage(); void messageClicked(); private: void createIconGroupBox(); void createMessageGroupBox(); void createActions(); void createTrayIcon(); QGroupBox *iconGroupBox; QLabel *iconLabel; QComboBox *iconComboBox; QCheckBox *showIconCheckBox; QGroupBox *messageGroupBox; QLabel *typeLabel; QLabel *durationLabel; QLabel *durationWarningLabel; QLabel *titleLabel; QLabel *bodyLabel; QComboBox *typeComboBox; QSpinBox *durationSpinBox; QLineEdit *titleEdit; QTextEdit *bodyEdit; QPushButton *showMessageButton; QAction *minimizeAction; QAction *maximizeAction; QAction *restoreAction; QAction *quitAction; QSystemTrayIcon *trayIcon; QMenu *trayIconMenu; };
我們實現了幾個私有槽來響應用戶交互,其他私有函數只是為了簡化構造函數而提供的方便函數。
托盤圖標是QSystemTrayIcon類的一個實例,要檢查用戶桌面上是否存在系統托盤,請調用靜態QSystemTrayIcon::isSystemTrayAvailable()函數。與圖標相關聯,我們提供了一個菜單,其中包含典型的最小化、最大化、恢復和退出操作。我們重新實現了QWidget::setVisible()函數,以便在編輯器的外觀發生變化時更新托盤圖標的菜單,例如,在最大化或最小化主應用程序窗口時。
最后,我們重新實現QWidget的closeEvent()函數,以便能夠通知用戶(在關閉編輯器窗口時),該程序將繼續在系統托盤中運行,直到用戶選擇圖標上下文菜單中的Quit條目。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網