问题
From what I understand, to make a property an array in QML you must specify it as the type variant
or var
:
property var myArray:[]
And this appears to be exactly the same as:
property variant myArray:[]
Is this true?
回答1:
According to the Qt 5.0 variant documentation:
The variant type is a generic property type. It is obsolete and exists only to support old applications; new applications should use var type properties instead.
So yes, it is the same, but you should always stick to var
(unless you got an earlier version which does not support that yet).
回答2:
This is not a completely new answer, but contains additional information about the answer provided by @Tim Meyer, based on my own experience:
- With Qt 4.* or QtQuick 1.*,
property variant
has to be used otherwise QML parsing errors will be produced. - With Qt 5 or QtQuick 2.*, either
property variant
orproperty var
can be used. But the latter one is recommended, as the former one is being deprecated. Qt 4
property variant
or Qt 5property var
may be used for QML array or list declaration/definition. But if the type and unchangeable content ofmyArray
are known in advance,property list<Type>
can also be used. For example:property list<
Item
> myArray: [ Item {}, Item {} ]
来源:https://stackoverflow.com/questions/19582026/are-var-and-variant-the-same-thing