Qml之variant與var對比
來源 https://blog.csdn.net/nicai_xiaoqinxi/article/details/103192580
參考 https://wiki.qt.io/Property-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作用更大,避免不必要的轉換,性能更好。
==================== End