QSystemTrayIcon类

QSystemTrayIcon类提供了一个在系统托盘中的应用图标。《更多...》

头文件 #include <QSystemTrayIcon>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QObject

公共类型

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

属性

公共函数

QSystemTrayIcon(QObject *parent = nullptr)
QSystemTrayIcon(const QIcon &icon, QObject *parent = nullptr)
虚拟~QSystemTrayIcon()
QMenu *contextMenu() const
QRectgeometry() const
QIconicon() const
boolisVisible() const
voidsetContextMenu(QMenu *menu)
voidsetIcon(const QIcon &icon)
voidsetToolTip(const QString &tip)
QStringtoolTip() const

公共槽函数

voidhide()
voidsetVisible(bool visible)
voidshow()
voidshowMessage(const QString &title, const QString &message, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int millisecondsTimeoutHint = 10000)
voidshowMessage(const QString &title, const QString &message, const QIcon &icon, int millisecondsTimeoutHint = 10000)

信号

voidactivated(QSystemTrayIcon::ActivationReason reason)
voidmessageClicked()

静态公共成员

重写的受保护函数

virtual bool事件(QEvent *e) override

详细描述

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

The system tray on Windows 10.

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

  • 所有Windows支持的版本。
  • 所有实现D-Bus StatusNotifierItem规范的Linux桌面环境,包括KDE、Gnome、Xfce、LXQt和DDE。
  • 所有实现freedesktop.org XEmbed系统托盘规范的所有X11窗口管理和独立托盘实现。
  • 所有支持的macOS版本。

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

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

如果在构造系统托盘图标时系统托盘不可用,但后来变得可用,如果图标是visible,QSystemTrayIcon将自动在系统托盘中为应用程序添加条目。

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

仅在X11上,当请求工具提示时,QSystemTrayIcon会收到类型为QEvent::ToolTipQHelpEvent。此外,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。根据需要,图标将被缩放到适当的大小。

访问函数

QIconicon() const
voidsetIcon(const QIcon &icon)

toolTip : QString

此属性保存系统托盘条目的小工具提示信息。

在某些系统中,工具提示的长度有限。当必要时,工具提示将被截断。

访问函数

QStringtoolTip() const
voidsetToolTip(const QString &tip)

visible : bool

此属性保存系统托盘条目是否可见。

将此属性设置为true或调用show()将使系统托盘图标可见;将此属性设置为false或调用hide()将隐藏它。

访问函数

boolisVisible() const
voidsetVisible(bool visible)

成员函数文档

QSystemTrayIcon::QSystemTrayIcon(QObject *parent = nullptr)

使用给定的parent构造一个QSystemTrayIcon对象。

图标最初是无 visible。

另请参阅visible.

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

使用给定的iconparent构造一个QSystemTrayIcon对象。

图标最初是无 visible。

另请参阅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 可见时,会自动在系统托盘增加一个条目。

[信号] void QSystemTrayIcon::messageClicked()

当使用 showMessage() 显示的消息被用户点击时,会发出此信号。

注意:我们遵循 Microsoft Windows 行为,因此当用户在显示气球消息的托盘图标上单击时,也会触发此信号。

另请参阅activated()。

void QSystemTrayIcon::setContextMenu(QMenu *menu)

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

当用户通过单击鼠标按钮请求系统托盘图标的上下文菜单时,菜单将弹出。

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

另请参阅:contextMenu()。

[槽函数] void QSystemTrayIcon::show()

在系统托盘显示图标。

另请参阅:hide() 和 visible

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

显示具有给定 titlemessageicon 的气球消息,持续时间由 millisecondsTimeoutHint 指定。 titlemessage 必须为纯文本字符串。

用户可以点击消息;当发生这种情况时,将发出 messageClicked() 信号。

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

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

在 Qt 5.2 中已将其转换为槽。

另请参阅:show() 和 supportsMessages

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

此函数是 showMessage() 的重载。

显示具有给定 titlemessage 和自定义图标 icon 的气球消息,其持续时间由 millisecondsTimeoutHint 指定。

[静态] bool QSystemTrayIcon::supportsMessages()

如果系统托盘支持气球消息,则返回 true;否则返回 false

另请参阅 showMessage

© 2024 Qt公司有限公司。本文件中包含的文档贡献归各自所有者所有。此处提供的文档根据由自由软件基金会发布的GNU自由文档许可协议第1.3版进行许可。Qt及其相应的标志是芬兰以及其他国家和地区Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。