"Var" и "variant" - это одно и то же?

из того, что я понимаю, чтобы сделать свойство массивом в QML, вы должны указать его как тип variant или var:

property var myArray:[]

и это выглядит точно так же, как:

property variant myArray:[]

это правда?

2 ответов


по словам Qt 5.0 variant documentation:

тип variant является универсальным типом свойства. Он устарел и существует только для поддержки старых приложений, новые приложения должны использовать var вместо этого введите свойства.

Так что да, это то же самое, но вы должны всегда придерживаться var (Если у вас нет более ранней версии, которая еще не поддерживает это).


это не совсем новый ответ, но содержит дополнительную информацию об ответе, предоставленном @Tim Meyer, на основе моего собственного опыта:

  1. С Qt 4.* или QtQuick 1.*, property variant должен быть использован иначе QML для разбора ошибок будет произведено.
  2. С Qt 5 или QtQuick 2.* либо property variant или property var можно использовать. Но последнее рекомендуется, так как первое осуждается.
  3. Qt 4 property variant или Qt 5 property var может использоваться для объявления/определения массива QML или списка. Но если тип и неизменяемое содержание myArray известны заранее, property list<Type> можно также использовать. Например:

    свойства спискаItem> myArray: [ пункт {}, пункт {}]