Qml之variant與var對比
- 2019 年 11 月 24 日
- 筆記
為什麼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
作用更大,避免不必要的轉換,性能更好。