Qml之variant與var對比


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM