“var”和“variant”是一回事吗?

时间:2013-10-25 05:49:51

标签: qt qml qtquick2

根据我的理解,要在QML中将属性设为数组,您必须将其指定为类型variantvar

property var myArray:[]

这看起来与以下内容完全相同:

property variant myArray:[]

这是真的吗?

2 个答案:

答案 0 :(得分:10)

根据Qt 5.0 variant documentation

  

变体类型是通用属性类型。它已经过时,仅用于支持旧应用程序;新应用程序应该使用var类型属性。

所以是的,它是一样的,但你应该始终坚持var(除非你有一个不支持它的早期版本)。

答案 1 :(得分:3)

这不是一个全新的答案,但根据我自己的经验,包含了@Tim Meyer提供的答案的其他信息:

  1. 使用Qt 4. *或QtQuick 1. *,必须使用property variant,否则将产生QML解析错误。
  2. 使用Qt 5或QtQuick 2. *,可以使用property variantproperty var。但建议使用后者,因为前一个被弃用。
  3. Qt 4 property variant或Qt 5 property var可用于QML数组或列表声明/定义。但如果事先知道myArray的类型和不可更改的内容,也可以使用property list<Type>。例如:

    属性列表&lt; Item&gt; myArray:[Item {},Item {}]