qml:.cpp和qml类型转换。

2025-08-07  本文已影响0人  xqiiitan

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);
                          );
上一篇 下一篇

猜你喜欢

热点阅读