正常想做个QML应用的托盘,同时支持托盘的右键菜单,可能大家觉得都很简单,就仿照QA里面的,在main.qml加一下 :
SystemTrayIcon {
visible: true
icon.source: "qrc:/images/tray-icon.png"
menu: Menu {
MenuItem {
text: qsTr("Quit")
onTriggered: Qt.quit()
}
}
}
即可,
然而,并不好使,右键托盘图标没有反应,
又加一下
onActivated: {
window.show();
window.raise();
window.requestActivate();
}
即
SystemTrayIcon {
visible: true
icon.source: "qrc:/images/tray-icon.png"
onActivated: {
window.show();
window.raise();
window.requestActivate();
}
menu: Menu {
MenuItem {
text: qsTr("Quit")
onTriggered: Qt.quit()
}
}
}
发现还是不好使,排查一通发现QT6系统托盘也是有不少bug的、
正确的写法如下;
SystemTrayIcon {
visible: true
icon.source: "qrc:/c11n/Customize.ico"
onActivated: function(reason) {
if (reason === SystemTrayIcon.Context) {
sysMenu.open()
} else {
window.show();
window.raise();
window.requestActivate();
}
}
menu: Menu {
id: sysMenu
MenuItem {
text: qsTr("show main window")
onTriggered: {
window.show();
window.raise();
window.requestActivate();
}
}
MenuItem {
text: qsTr("quit client")
onTriggered: {
----
}
}
}
}
参考:https://bugreports.qt.io/browse/QTBUG-127556