"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: [ пункт {}, пункт {}]