c++ - 您如何注册相互依赖的 Qt QML Singleton?
问题描述
我正在使用一些 C++ 和一些 JavaScript/QML 构建一个 Qt 应用程序。
我有三个全局单例,A、B 和 C,我想向 QML 引擎注册它们。我可以使用这种方法独立注册每个对象。
A、B 和 C 需要有权访问传递给单例提供程序的 QMLEngine。
现在假设 B 和 C 依赖于 A;特别是,需要将 A 的全局实例传递给 B 和 C 的构造函数。如何实例化和注册这些类型?
解决方案
作为一个被那个非常糟糕的人刺痛的人,我强烈建议不要去那里,在你还可以的时候回头。
Qt 有一个相互引用单例的错误,不幸的是,它只是部分解决了,而且看起来它不会很快得到解决。
该错误导致 QML 引擎加载偶尔(10-20% 的时间)静默失败,没有错误,没有警告,没有应用程序窗口......什么都没有。只是一个卡住的死进程。
如果可能,将 A、B 和 C 实现为一个单例的子对象。然后,您仍然可以将它们单独公开为单例的属性。
推荐阅读
- python - python - 用 numpy.where 等 numpy 函数替换多个 if elif 语句和条件
- bluetooth - Raspberry Pi3,bluealsa - 已连接但蓝牙扬声器没有声音输出?
- python - 如何在 Flask 中使用 AJAX 遍历列表
- r - importerror 试图将 pandas 数据帧转换为 R 数据帧
- ruby-on-rails - has_one 虽然 has_one 的构建方法
- r - 在 R 中使用 fakeR 模拟数据
- mysql - 我怎么能使用 IN close 两次?
- amp-html - 显示从 json 到 AMP 页面的原始 HTML
- javascript - 如何在 Js 中以函数式方式编写代码
- c# - NativeScript HTTP 请求承诺 + WebApi 错误