QML中的var和variant有什么不同

根據(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ù))。

參考鏈接:

  1. Are “var” and “variant” the same thing?
  2. QML 性能上的注意事項(xiàng)和建議
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容