QML中的var和variant有什么不同

根据 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 引用(这可以减少某些表达式中需要的转换次数)。

参考链接:

  1. Are “var” and “variant” the same thing?
  2. QML 性能上的注意事项和建议
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。