3.cpp和qml类型转换。
基础类型对应转换;
数组类型转换;
map类型转换。
3.1 基础类型对应转换
QtType QML Value 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 vector2d,vector3d,vector4d
Enums decleared with Q_EENUM() enumeration.
3.2 数组类型转换
支持的类型QVariantList, QList<int>, QList<qreal>,
QList<bool>, QList<QString>, QStringList,
QVector<QString>, std::vector<QString>, QList<QUrl>
QVector<QUrl>, std::vector<QUrl>,
QVector<int>, QVector<bool>, QVector<real>,
std::vector<int>, std::vector<bool>, std::vector<real>.
//main.qml
function readArray(arr) {
print("======readArray=======");
var str = "" //js写法
for(var i=0;i<arr.length; i++) {
str += arr[i] + " "
}
print(str);
}
//读取js对象。
function readmap(map) {
print("======readmap=======");
var str = "" //js写法
for(var key in map) {
str += key + ":" +map[key] + " "
}
print(str);
}
//main.cpp
//传递js数组
//QVariantList varr = {11,22,33,44,55};
// std::vector<int> varr = {1,2,3,4,5,6};
std::vector<QString> varr = {"1a","2b","3c","4","5e"};
QMetaObject::invokeMethod(ct.get(), "readArray",
Q_ARG(QVariant, QVariant::fromValue(varr)) // 包装为 QVariant);
);
//map传递
QVariantMap maps;
maps["name"] = "name1";
maps["url"] = "jd.com";
QMetaObject::invokeMethod(ct.get(), "readmap",
Q_ARG(QVariant, QVariant::fromValue(maps)) // 包装为 QVariant);
);