将 2d 数组从 c++ 传递到 qml

Pass 2d Array from c++ to qml

本文关键字:qml c++ 2d 数组      更新时间:2023-10-16

问题在上面。我可以在 qml 中创建一个 2d 数组,如下所示:

function create()
{
    var array= new Array(9);
    array[0]= new Array(
}

那么如何在 c++ 中创建这样的数组呢?我试过了:

QVariant myArray= QVariant([4,5,6,7]);

但这行不通。

您可以使用可以传递给 qml 的QVariantList

QVariantList list;
list.append(QVariantList{5, 5, 6, 7});
问题是:

QVariant无法存储数组,因此这些行根本不会编译:

int array[] = {0, 1, 2};
QVariant v = array;

QVariant x = {0, 1, 2};

QVariant x{0, 1, 2};

但是,存在特定的类型,因此您最好这样做:

QVariantList myArray =
{
    QVariantList{4, 5, 6, 7},
    QVariantList{0, "one", true}
    //etc
};

并访问以下项目:

int x = myArray[0].toList()[0].toInt();
bool y = myArray[1].toList()[2].toBool();