本页内容

QSystemTrayIcon Class

QSystemTrayIcon 类为应用程序在系统托盘中提供一个图标。更多内容...

头文件: #include <QSystemTrayIcon>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QObject

公共类型

enum ActivationReason { Unknown, Context, DoubleClick, Trigger, MiddleClick }
enum MessageIcon { NoIcon, Information, Warning, Critical }

属性

公共函数

QSystemTrayIcon(QObject *parent = nullptr)
QSystemTrayIcon(const QIcon &icon, QObject *parent = nullptr)
virtual ~QSystemTrayIcon()
QMenu *contextMenu() const
QRect geometry() const
QIcon icon() const
bool isVisible() const
void setContextMenu(QMenu *menu)
void setIcon(const QIcon &icon)
void setToolTip(const QString &tip)
QString toolTip() const

公共槽位

void hide()
void setVisible(bool visible)
void show()
void showMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int millisecondsTimeoutHint = 10000)
void showMessage(const QString &title, const QString &message, const QIcon &icon, int millisecondsTimeoutHint = 10000)

信号

void activated(QSystemTrayIcon::ActivationReason reason)
void messageClicked()

静态公共成员

重新实现的受保护函数

virtual bool event(QEvent *e) override

详细说明

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

Windows 10 上的系统托盘。

QSystemTrayIcon 类可在以下平台上使用:

要检查用户桌面上是否存在系统托盘,请调用静态函数QSystemTrayIcon::isSystemTrayAvailable()。

要添加系统托盘条目,请创建一个 QSystemTrayIcon 对象,调用setContextMenu() 为图标提供上下文菜单,并调用show() 使其在系统托盘中显示。可随时使用showMessage() 显示状态通知消息(“气泡消息”)。

如果在构建系统托盘图标时系统托盘不可用,但随后变得可用,且该图标处于visible 状态,则 QSystemTrayIcon 将自动在系统托盘中为该应用程序添加一个条目。

当用户激活图标时,会发出activated() 信号。

仅在 X11 环境下,当请求显示工具提示时,QSystemTrayIcon 会收到类型为QEvent::ToolTip 的QHelpEvent 信号。此外,QSystemTrayIcon 还会收到类型为QEvent::Wheel 的滚轮事件。其他平台不支持这些事件。注意:自 GNOME Shell 3.26 版本起,如果未安装 shell 扩展,系统并不支持所有QSystemTrayIcon::ActivationReason 。

另请参阅《 QDesktopServices》 、《桌面集成》以及《系统托盘图标示例》。

成员类型文档

enum QSystemTrayIcon::ActivationReason

此枚举描述了系统托盘被激活的原因。

常量值描述
QSystemTrayIcon::Unknown0未知原因
QSystemTrayIcon::Context1请求了系统托盘条目的上下文菜单
QSystemTrayIcon::DoubleClick2双击了系统托盘条目。

注意:在 macOS上 ,只有当未设置上下文菜单时,才会触发双击事件,因为该菜单在鼠标点击时即会打开

QSystemTrayIcon::Trigger3系统托盘条目被单击
QSystemTrayIcon::MiddleClick4系统托盘条目被鼠标中键单击

另请参阅 activated()。

enum QSystemTrayIcon::MessageIcon

此枚举描述了显示气泡提示时显示的图标。

常量值描述
QSystemTrayIcon::NoIcon0不显示图标。
QSystemTrayIcon::Information1显示信息图标。
QSystemTrayIcon::Warning2显示标准警告图标。
QSystemTrayIcon::Critical3显示严重警告图标。

另请参阅 QMessageBox 。

属性文档

icon : QIcon

此属性用于存储系统托盘图标

在 Windows 系统中,系统托盘图标的大小为 16x16;在 X11 环境中,推荐大小为 22x22。图标将根据需要缩放至适当的大小。

访问函数:

QIcon icon() const
void setIcon(const QIcon &icon)

toolTip : QString

此属性存储系统托盘条目的工具提示

在某些系统上,工具提示的长度会受到限制。如有必要,工具提示将被截断。

访问函数:

QString toolTip() const
void setToolTip(const QString &tip)

visible : bool

该属性用于控制系统托盘图标是否可见

将此属性设置为 true 或调用 `show()` 会显示系统托盘图标;将此属性设置为 false 或调用 `hide()` 会隐藏该图标。

访问函数:

bool isVisible() const
void setVisible(bool visible)

成员函数文档

QSystemTrayIcon::QSystemTrayIcon(QObject *parent = nullptr)

根据给定的parent 创建一个QSystemTrayIcon对象。

该图标初始状态为不可见。

另请参阅 visible 。

QSystemTrayIcon::QSystemTrayIcon(const QIcon &icon, QObject *parent = nullptr)

根据给定的icon 和parent 创建一个QSystemTrayIcon对象。

该图标初始时不可见。

另请参阅 visible 。

[virtual noexcept] QSystemTrayIcon::~QSystemTrayIcon()

从系统托盘中移除图标,并释放所有已分配的资源。

[signal] void QSystemTrayIcon::activated(QSystemTrayIcon::ActivationReason reason)

当用户激活系统托盘图标时,会触发此信号。reason 指定了激活的原因。QSystemTrayIcon::ActivationReason 列举了各种原因。

另请参阅 QSystemTrayIcon::ActivationReason 。

QMenu *QSystemTrayIcon::contextMenu() const

返回系统托盘条目当前的上下文菜单。

另请参阅 setContextMenu()。

[override virtual protected] bool QSystemTrayIcon::event(QEvent *e)

重写了:QObject::event(QEvent *e)。

QRect QSystemTrayIcon::geometry() const

返回系统托盘图标的几何形状(以屏幕坐标表示)。

另请参阅 visible 。

[slot] void QSystemTrayIcon::hide()

隐藏系统托盘图标。

另请参阅 show() 和visible 。

[static] bool QSystemTrayIcon::isSystemTrayAvailable()

如果系统托盘可用,则返回true ;否则返回false 。

如果系统托盘当前不可用,但随后变得可用,且QSystemTrayIcon 为visible 时, 将自动在系统托盘中添加一个条目。

[signal] void QSystemTrayIcon::messageClicked()

当用户单击了通过showMessage()显示的消息时,会发出此信号。

注意:我们 遵循 Microsoft Windows 的行为规范,因此当用户点击显示气泡提示的系统托盘图标时,也会触发该信号。

另请参阅 activated()。

void QSystemTrayIcon::setContextMenu(QMenu *menu)

将指定的menu 设置为系统托盘图标的上下文菜单。

当用户单击鼠标按钮以调用系统托盘图标的上下文菜单时,该菜单将弹出。

注意: 系统托盘图标 不拥有该菜单的所有权。您必须确保在适当的时候将其删除,例如通过使用合适的父对象来创建该菜单。

另请参阅 contextMenu()。

[slot] void QSystemTrayIcon::show()

在系统托盘中显示图标。

另请参阅 hide() 和visible 。

[slot] void QSystemTrayIcon::showMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int millisecondsTimeoutHint = 10000)

在millisecondsTimeoutHint 中指定的时间,为具有给定title 、message 和icon 的条目显示气泡提示。title 和message 必须是纯文本字符串。

用户可以点击该消息;此时将发出messageClicked() 信号。

请注意,消息的显示取决于系统配置和用户偏好设置,因此消息可能根本不会出现。因此,不应将其作为提供关键信息的唯一手段。

在 Windows 上,当应用程序拥有焦点时,millisecondsTimeoutHint 通常会被系统忽略。

在 Qt 5.2 中已转换为插槽。

注意:此 槽已被重载。要连接到此槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        systemTrayIcon, qOverload(&QSystemTrayIcon::showMessage));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        systemTrayIcon, [receiver = systemTrayIcon](const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon, int millisecondsTimeoutHint) { receiver->showMessage(title, message, icon, millisecondsTimeoutHint); });
有关更多示例和方法,请参阅“连接到重载的槽”。

另请参阅 show() 和supportsMessages()。

[slot] void QSystemTrayIcon::showMessage(const QString &title, const QString &message, const QIcon &icon, int millisecondsTimeoutHint = 10000)

为具有给定title 、message 以及自定义图标icon 的条目显示气泡提示,显示时间为millisecondsTimeoutHint 中指定的时间。

注意:此 槽为重载槽。要连接到此槽:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        systemTrayIcon, qOverload(&QSystemTrayIcon::showMessage));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        systemTrayIcon, [receiver = systemTrayIcon](const QString &title, const QString &message, const QIcon &icon, int millisecondsTimeoutHint) { receiver->showMessage(title, message, icon, millisecondsTimeoutHint); });
有关更多示例和方法,请参阅“连接到重载的槽”。

[static] bool QSystemTrayIcon::supportsMessages()

如果系统托盘支持气泡提示,则返回true ;否则返回false 。

另请参阅 showMessage()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.