Qml之variant與var對比

爲何Qt Quick 2中變量定義改成var呢?而不繼續使用variant呢?咱們看看它們的區別吧。

QtQuick 1.x

  • property variant內部是QVariant。
  • 對象被分配給variant變量時則會被轉換爲QVariantMap。
  • 從javascript訪問該屬性將致使QVariantMap轉換回JS對象。
  • javascript的函數,特殊的JS值(null,undefined)沒法存儲在"property variant"類型的屬性中。

QtQuick 2.x

  • property var內部是javascript值。
  • property var支持建立javascript的全部內容,包括函數引用。
  • 僅當從C ++(經過QObject::property()或QQmlProperty::read())訪問時,纔會轉換爲QVariant(將其餘JS值轉換爲QVariant的轉換規則相同)。
  • 在C ++端實現類型時,能夠將QJSValue類用做屬性/方法參數,以在C ++和QML/JS之間傳輸值,而不會形成類型/數據丟失。

總結

  使用property var做用更大,避免沒必要要的轉換,性能更好。javascript


ref: https://wiki.qt.io/Property-varjava

相關文章
相關標籤/搜索