qml systemtrayicon 没有 qwidget/qapplication?
Posted
技术标签:
【中文标题】qml systemtrayicon 没有 qwidget/qapplication?【英文标题】:qml systemtrayicon without qwidget/qapplication? 【发布时间】:2019-09-29 05:58:53 【问题描述】:这里的最后一篇帖子似乎暗示 systemtrayicon 不再需要 qwidget 或 qapplication...System tray icon without widgets
我已经尝试过了,但它不适合我。我猜这是一个不正确的陈述是否正确?
将示例代码放在下面并导入。
在 main.qml 中:
SystemTrayIcon
visible: true
//icon.source: "qrc:/images/tray-icon.png"
onActivated:
window.show()
window.raise()
window.requestActivate()
错误:QWidget:没有 QApplication 无法创建 QWidget
【问题讨论】:
【参考方案1】:TL; DR; 不,你误会了。 SystemTrayIcon
需要你使用QApplication
。
说明:
SystemTrayIcon
是一个 QSystemTrayIcon
包装器,可以在 QML 中使用,因此必须使用 QApplication
,这在 the docs 中表示:
Availability
本机系统托盘图标目前在以下设备上可用 平台:
X11 的所有窗口管理器和独立托盘实现都实现了 freedesktop.org XEmbed 系统托盘规范。 实现 freedesktop.org D-Bus StatusNotifierItem 规范的所有桌面环境,包括最新版本的 KDE 和 团结。 所有支持的 macOS 版本。请注意,必须为 showMessage() 安装 Growl 通知系统才能在 OS X 上显示消息 10.8 之前(山狮)。Qt Labs Platform 模块使用 Qt 小部件作为没有本机的平台上的后备 实现可用。 因此,使用类型的应用程序 Qt Labs Platform 模块应该链接到 QtWidgets 并使用 QApplication 而不是 QGuiApplication。
要链接到 QtWidgets 库,请将以下内容添加到您的 qmake 项目文件:
QT += widgets
在 main() 中创建 QApplication 的实例:
#include <QApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec();
注意:Qt.labs 模块中的类型不保证保持兼容 在未来的版本中。
(强调我的)
【讨论】:
以上是关于qml systemtrayicon 没有 qwidget/qapplication?的主要内容,如果未能解决你的问题,请参考以下文章