我们说我有一堆c ++对象要暴露给Qml。
我可以想象两种方式:
第一种方法,每个对象的一个导入语句
qmlRegisterType<Object1>("my.package.object1", 1, 0, "Object1");
qmlRegisterType<Object2>("my.package.object2", 1, 0, "Object2");
qmlRegisterType<Object3>("my.package.object3", 1, 0, "Object3");
qmlRegisterType<Object4>("my.package.object4", 1, 0, "Object4");
...
然后在Qml中我们导入每个Component中需要的东西
import my.package.object2 1.0
import my.package.object3 1.0
Object2 { Object3 { } }
第二种方法所有对象的一个导入语句:
qmlRegisterType<Object1>("my.package", 1, 0, "Object1");
qmlRegisterType<Object2>("my.package", 1, 0, "Object2");
qmlRegisterType<Object3>("my.package", 1, 0, "Object3");
qmlRegisterType<Object4>("my.package", 1, 0, "Object4");
...
然后在Qml中,我们导入每个需要至少其中一个的组件中的所有对象
import my.package 1.0
Object3 {
Object2 { ... }
Object1 { ... }
}
显然,将包中的对象分组更简单(只要有意义)。性能不应成为您的主要关注点。
在绩效方面比另一方好一点?
答案 0 :(得分:2)
我不是100%肯定,但我会说QML引擎在找到导入语句时检查模块,所以如果你把所有类放在相同的模块中,它们将同时被找到,但如果你分开他们需要进行几次模块检查。
所以真正的答案是:
如果您在应用程序中使用大部分对象,请将它们放在同一个模块中,这样只需一个模块检查即可拥有所有这些对象(对于不使用的对象,您的开销很小) ,但是你节省了新模块内省的开销。)
如果您使用的项目很少,请将它们分开,以便在新模块开销与#34;之间取得比例。和&#34;未使用的对象在模块&#34;
免责声明:无论如何,我们不知道&#34;新模块检查&#34;的基准。开销,模块中的&#34;未使用的对象&#34;开销。