2016-11-08 50 views
1

對於許多應用程序,尤其是在低性能機器上,設置內置組件(例如LoaderImage)以異步加載其資源是有益的。要做到這一點,有兩個明顯的選擇:更改屬性的默認值(例如,異步)

  1. 設置內置組件所需的屬性,即asynchronous: true
  2. 與基本上這個內容創建一個自定義組件AsyncXXX

AsyncXXX。 QML:

XXX { 
    asynchronous: true 
} 

其中XXX是要麼LoaderImage

我想知道他們爲什麼默認情況下沒有設置爲異步模式。

最重要的是,有沒有辦法 - 一個環境變量,一個全局設置 - 將內置組件的默認行爲更改爲異步組件,從而避免自定義組件?

回答

3

你可以很容易地使ASLoaderASImage QML類型的只是與asynchronous: trueLoaderImage,並利用這些整個項目。這將節省您無處不在的修改權限,如果您想要覆蓋它,只需在原型中進行修改即可。

我想知道爲什麼他們默認情況下沒有設置爲異步模式。

異步總是更復雜,開銷更大,所以它是有意義的,如果它不是默認行爲。從我看到的QML代碼中,同步比異步更經常使用,所以使異步默認是沒有意義的。

編輯:

你也可以做到,如果你綁定的原型項目範圍內的屬性,例如上下文屬性,或者在main.qml屬性運行期間同步和異步行爲之間的切換。