SystemTrayIcon QML Type
系统托盘图标。更多...
| Import Statement: | import Qt.labs.platform |
| Inherits: |
属性
- available : bool
- geometry : rect
(since Qt.labs.platform 1.1 (Qt 5.12)) - icon
(since Qt.labs.platform 1.1 (Qt 5.12))- icon.mask : bool
(since Qt.labs.platform 1.1 (Qt 5.12)) - icon.name : string
(since Qt.labs.platform 1.1 (Qt 5.12)) - icon.source : url
(since Qt.labs.platform 1.1 (Qt 5.12))
- icon.mask : bool
- menu : Menu
- supportsMessages : bool
- tooltip : string
- visible : bool
信号
- activated(ActivationReason reason)
- messageClicked()
方法
- void hide()
- void show()
- void showMessage(string title, string message, MessageIcon icon, int msecs)
详细说明
SystemTrayIcon 类型为应用程序在系统托盘中提供图标。
许多桌面平台都提供了一个专门的系统托盘或通知区域,应用程序可以在其中显示图标和通知消息。
![]()
以下示例演示了如何创建系统托盘图标,以及如何使用activated()信号:
SystemTrayIcon {
visible: true
icon.source: "qrc:/images/tray-icon.png"
onActivated: {
window.show()
window.raise()
window.requestActivate()
}
}托盘菜单
SystemTrayIcon 可以拥有一个菜单,该菜单在图标被激活时打开。
![]()
以下示例演示了如何为系统托盘图标分配Menu :
SystemTrayIcon {
visible: true
icon.source: "qrc:/images/tray-icon.png"
menu: Menu {
MenuItem {
text: qsTr("Quit")
onTriggered: Qt.quit()
}
}
}通知消息
SystemTrayIcon 可以显示通知消息。
![]()
以下示例展示了如何使用showMessage()显示通知消息,以及如何利用messageClicked()信号:
SystemTrayIcon {
visible: true
icon.source: "qrc:/images/tray-icon.png"
onMessageClicked: console.log("Message clicked")
Component.onCompleted: showMessage("Message title", "Something important came up. Click this to know more.")
}可用性
目前,原生系统托盘图标在以下平台上支持available :
- 所有遵循freedesktop.org XEmbed 系统托盘规范的 X11 窗口管理器及独立托盘实现。
- 所有实现freedesktop.org D-Bus StatusNotifierItem 规范的桌面环境,包括 KDE 和 Unity 的最新版本。
- 所有受支持的 macOS 版本。请注意,在 OS X 10.8(Mountain Lion)之前的版本中,showMessage() 必须安装 Growl 通知系统才能显示消息。
在没有原生实现的平台上,Qt Labs Platform 模块会使用Qt Widgets 作为备用方案。因此,使用Qt Labs Platform 模块中类型的应用程序应链接到QtWidgets ,并使用QApplication 代替QGuiApplication 。
要链接到QtWidgets 库,请在您的 qmake 项目文件中添加以下内容:
QT += widgets在main() 中创建QApplication 的实例:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}注意: Qt.labs 模块中的类型在未来版本中不保证保持兼容。
另请参阅 Menu 。
属性文档
available : bool [read-only]
该属性表示系统托盘是否可用。
geometry : rect [since Qt.labs.platform 1.1 (Qt 5.12)]
该属性存储系统托盘图标的几何信息。
该属性首次出现在 Qt Labs Platform 1.1(Qt 5.12)中。
icon group
icon.mask : bool [since Qt.labs.platform 1.1 (Qt 5.12)]
icon.name : string [since Qt.labs.platform 1.1 (Qt 5.12)]
icon.source : url [since Qt.labs.platform 1.1 (Qt 5.12)]
该属性用于存储系统托盘图标。
SystemTrayIcon {
icon.mask: true
icon.source: "qrc:/images/tray-icon.png"
}这些属性是在 Qt Labs Platform 1.1(Qt 5.12)中引入的。
menu : Menu
此属性用于设置系统托盘图标的菜单。
supportsMessages : bool [read-only]
该属性用于指定系统托盘图标是否支持通知消息。
另请参阅 showMessage()。
tooltip : string
该属性存储系统托盘图标的工具提示。
visible : bool
该属性控制系统托盘图标是否可见。
默认值为false 。
Signal 文档
activated(ActivationReason reason)
当用户激活系统托盘图标时,会发出此信号。reason 参数指定了系统托盘图标是如何被激活的。
可用原因:
| 常量 | 描述 |
|---|---|
SystemTrayIcon.Unknown | 未知原因 |
SystemTrayIcon.Context | 请求了系统托盘图标的上下文菜单 |
SystemTrayIcon.DoubleClick | 双击了系统托盘图标 |
SystemTrayIcon.Trigger | 单击了系统托盘图标 |
SystemTrayIcon.MiddleClick | 用鼠标中键单击了系统托盘图标 |
注意: 对应的处理程序 为onActivated 。
messageClicked()
当用户点击一条通知消息时,会触发此信号。
注意: 相应的处理程序 是onMessageClicked 。
另请参阅 showMessage()。
方法文档
void hide()
隐藏系统托盘图标。
void show()
显示系统托盘图标。
void showMessage(string title, string message, MessageIcon icon, int msecs)
在msecs 中指定的时间段内,显示一条包含给定title 、message 和icon 的系统托盘消息。
注意:系统托盘 消息取决于系统配置和用户偏好设置,可能根本不会显示。因此,不应将其作为提供关键信息的唯一手段。
另请参阅 supportsMessages 和messageClicked()。
© 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.