爲何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