您如何注册彼此依赖的Qt QML单身人士?

时间:2018-06-19 15:32:32

标签: c++ qt qml

我正在使用某些C ++和一些JavaScript / QML构建Qt应用程序。

我要向QML引擎注册三个全局单例A,B和C。我可以使用this method独立注册每个对象。

A,B和C需要访问传递给单例提供程序的QMLEngine。

现在想象B和C依赖于A;特别是,需要将A的全局实例传递给B和C的构造函数。如何实例化和注册这些类型?

1 个答案:

答案 0 :(得分:6)

作为一个被那种非常糟糕的事情st住的人,我强烈建议不要去那里,在你仍然可以的时候回头。

Qt had a bug with inter-referencing singletons that unfortunately was only partially solved, and it doesn't look like it will get resolved any time soon.

该错误会导致QML引擎加载(偶尔10%到20%的时间)静默失败,没有错误,没有警告,没有应用程序窗口……什么也没有。只是一个停滞的死进程。

如果可能,将A,B和C实现为一个单例的子对象。然后,您仍然可以将它们单独显示为单例的属性。