"Var" и "variant" - это одно и то же?
из того, что я понимаю, чтобы сделать свойство массивом в QML, вы должны указать его как тип variant
или var
:
property var myArray:[]
и это выглядит точно так же, как:
property variant myArray:[]
это правда?
2 ответов
по словам Qt 5.0 variant documentation:
тип variant является универсальным типом свойства. Он устарел и существует только для поддержки старых приложений, новые приложения должны использовать var вместо этого введите свойства.
Так что да, это то же самое, но вы должны всегда придерживаться var
(Если у вас нет более ранней версии, которая еще не поддерживает это).
это не совсем новый ответ, но содержит дополнительную информацию об ответе, предоставленном @Tim Meyer, на основе моего собственного опыта:
- С Qt 4.* или QtQuick 1.*,
property variant
должен быть использован иначе QML для разбора ошибок будет произведено. - С Qt 5 или QtQuick 2.* либо
property variant
илиproperty var
можно использовать. Но последнее рекомендуется, так как первое осуждается. -
Qt 4
property variant
или Qt 5property var
может использоваться для объявления/определения массива QML или списка. Но если тип и неизменяемое содержаниеmyArray
известны заранее,property list<Type>
можно также использовать. Например:свойства спискаItem> myArray: [ пункт {}, пункт {}]