QML中的var和variant有什么不同
2020-08-13 本文已影响0人
赵者也
根据 Qt 5 中 variant 的文档描述来看:
variant
类型和 var
类型一样在 QML 中都是泛型属性类型。只是 variant
类型已经过时了,仅用于支持旧的应用程序(向后兼容使用);新的 QML 应用程序应该使用 var
类型属性。
所以,总结一句话就是,除非我们的应用程序还在支持比较老的版本的 Qt,否则不要在 QML 的代码中使用 variant
类型。
下面是使用建议:
-
Qt 4.*
或者QtQuick 1.*
中使用variant
类型。 -
Qt 5.*
或者QtQuick 2.*
中最好使用var
类型。 - QML 数组或列表的声明/定义(declaration/definition)可以使用 Qt 4 的
variant
类型或 Qt 5 的var
类型。但是如果预先知道myArray
的类型和不可更改的内容,也可以使用属性list<type>
。例如:
property list<Item> myArray: [ Item {}, Item {} ]
另外,在我的文章 QML 性能上的注意事项和建议 中的“类型转换”部分也有介绍:“property var” 应被视为优于 “property variant” (请注意,“property variant” 被标记为已过时),因为它允许存储真正的 JavaScript 引用(这可以减少某些表达式中需要的转换次数)。
参考链接: