人妻丰满熟妇AV无码片,岛国AV无码免费无禁网站,丰满岳乱妇一区二区三区,男插女高潮一区二区

qml 和 cpp 之間傳遞數(shù)值時候的類型轉(zhuǎn)換

技術(shù)分享 2022-03-25 10:13:54

qml 和 cpp 之間傳遞數(shù)值時候的類型轉(zhuǎn)換其實就是:

javascript 和 c++ 之間的大致的類型轉(zhuǎn)換,js類型是qml的類型子集,c++類型是qt的類型子集


①基礎(chǔ):


Qt Type  

QML Basic Type


bool  

bool


unsigned int, int

int


double

double


float, qreal

real


QString

string


QUrl

url


QColor

color


QFont

font


QDateTime

date


QPoint, QPointF

point


QSize, QSizeF

size


QRect, QRectF

rect


QMatrix4x4

matrix4x4


QQuaternion

quaternion


QVector2D, QVector3D, QVector4D

vector2d, vector3d, vector4d


Enums declared with Q_ENUM() or Q_ENUMS()

enumeration


②直接或間接以QObject為基類的類型。

只要將改類型注冊到qml的類型系統(tǒng)。


③Qt(C++)類型和javascrpt類型之間的轉(zhuǎn)換。


④QVariantList 和QVariantMap 到JavaScript的Array 和Object之間的類型轉(zhuǎn)換。


⑤QDateTime和javascript 中的Date之間的轉(zhuǎn)換。


⑥序列類型到JavaScript中Array類型的轉(zhuǎn)換。

目前支持以下類型:

QList

QList

QList

QList and QStringList

QList

有兩種使用方式:

1)以Q_PROPERTY聲明的屬性。


以Q_INVOKABLE聲明的函數(shù)的返回值。

注意:這兩種方式有如下差異:

1)作為Q_PROPERTY聲明的屬性的方式,通過下標修改或訪問任何一個元素都會通過屬性系統(tǒng)進行讀寫操作。

2)作為Q_INVOKABLE函數(shù)返回值的方式,在訪問和修改時對系統(tǒng)的性能影響很小。


⑦以Q_GADGET聲明的自定義c++類型,需要在JavaScript中訪問的屬性都用Q_PROPERTY聲明,需要在JavaScript中訪問的函數(shù)都要用Q_INVOKABLE聲明。這和繼承自QObject的類型的用法相同。


⑧想要使用一個在c++中定義的枚舉類型,包含該枚舉的類必須要注冊并且,該枚舉應該使用Q_ENUMS來聲明。注意: 枚舉類型的值的首字母必須大寫,才能在mql中被訪問。


更多最新的你應該在qt中搜索的關(guān)鍵詞是:

Data Type Conversion Between QML and C++ 



//

qml對象的屬性定義  ({})  代表QtObject空對象

property QtObject myChart:({})


從qml js引擎到 c++  類型不明確對應的一般只轉(zhuǎn)換成 QVariant

//QVariant 也直接支持接收一個qml的js數(shù)組[]   沒必要用QVariantList<br/>QVector<double>  cppdatalist = indata.value<QVector<double>>();  
咨詢小瓶科技
咨詢我們
頂部