根據(jù) Qt 5 中 variant 的文檔描述來看:
variant 類型和 var 類型一樣在 QML 中都是泛型屬性類型。只是 variant 類型已經(jīng)過時(shí)了,僅用于支持舊的應(yīng)用程序(向后兼容使用);新的 QML 應(yīng)用程序應(yīng)該使用 var 類型屬性。
所以,總結(jié)一句話就是,除非我們的應(yīng)用程序還在支持比較老的版本的 Qt,否則不要在 QML 的代碼中使用 variant 類型。
下面是使用建議:
-
Qt 4.*或者QtQuick 1.*中使用variant類型。 -
Qt 5.*或者QtQuick 2.*中最好使用var類型。 - QML 數(shù)組或列表的聲明/定義(declaration/definition)可以使用 Qt 4 的
variant類型或 Qt 5 的var類型。但是如果預(yù)先知道myArray的類型和不可更改的內(nèi)容,也可以使用屬性list<type>。例如:
property list<Item> myArray: [ Item {}, Item {} ]
另外,在我的文章 QML 性能上的注意事項(xiàng)和建議 中的“類型轉(zhuǎn)換”部分也有介紹:“property var” 應(yīng)被視為優(yōu)于 “property variant” (請(qǐng)注意,“property variant” 被標(biāo)記為已過時(shí)),因?yàn)樗试S存儲(chǔ)真正的 JavaScript 引用(這可以減少某些表達(dá)式中需要的轉(zhuǎn)換次數(shù))。
參考鏈接: