「Qt Widget中文示例指南」如何实现一个系统托盘图标?(一)

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

System Tray Icon(系统托盘图标)示例展示了如何将带有菜单和弹出消息的图标添加到桌面环境的系统托盘中。

系统托盘图标的截图

点击获取Qt Widget组件下载

现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以在这里显示图标和短消息。

本实例由一个类Window组成,它提供了主应用程序窗口(即系统托盘图标的编辑器)和相关图标。

编辑器允许用户选择首选图标以及设置气球消息的类型和持续时间,用户还可以编辑消息的标题和正文。最后,编辑器提供了一个复选框,控制图标是否实际显示在系统托盘中。

Window类定义

Window类继承了QWidget:

cpp 复制代码
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条目。

Qt Widget组件推荐
  • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!
相关推荐
西猫雷婶1 小时前
python画图|3D surface基础教程
开发语言·python
小于负无穷2 小时前
Go 中 Gin 框架的使用指南
开发语言·后端·golang·gin
周bro2 小时前
vue3使用panolens.js实现全景,带有上一个下一个,全屏功能
开发语言·javascript·ecmascript
白总Server3 小时前
rust解说
linux·开发语言·后端·golang·rust·debian·php
金庆3 小时前
Rust Pin
开发语言·后端·rust
Lill_bin3 小时前
CAS机制:并发编程中的原子操作
java·服务器·开发语言·windows·算法·微服务
wh233z3 小时前
Codeforces Round 969 (Div. 2) (A~D)
c语言·开发语言·数据结构·c++·算法·图论
vczxh4 小时前
linux使用命令行编译qt.cpp
linux·数据库·qt
曼亿点4 小时前
python的流程控制语句之制作空气质量评估系统
android·开发语言·python
奕星星奕4 小时前
QT QObject源码学习(二)
c++·qt