2016-11-08 79 views
1

对于许多应用程序,尤其是在低性能机器上,设置内置组件(例如LoaderImage)以异步加载其资源是有益的。要做到这一点,有两个明显的选择:更改属性的默认值(例如,异步)

  1. 设置内置组件所需的属性,即asynchronous: true
  2. 与基本上这个内容创建一个自定义组件AsyncXXX

AsyncXXX。 QML:

XXX { 
    asynchronous: true 
} 

其中XXX是要么LoaderImage

我想知道他们为什么默认情况下没有设置为异步模式。

最重要的是,有没有办法 - 一个环境变量,一个全局设置 - 将内置组件的默认行为更改为异步组件,从而避免自定义组件?

回答

3

你可以很容易地使ASLoaderASImage QML类型的只是与asynchronous: trueLoaderImage,并利用这些整个项目。这将节省您无处不在的修改权限,如果您想要覆盖它,只需在原型中进行修改即可。

我想知道为什么他们默认情况下没有设置为异步模式。

异步总是更复杂,开销更大,所以它是有意义的,如果它不是默认行为。从我看到的QML代码中,同步比异步更经常使用,所以使异步默认是没有意义的。

编辑:

你也可以做到,如果你绑定的原型项目范围内的属性,例如上下文属性,或者在main.qml属性运行期间同步和异步行为之间的切换。