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

时间:2019-04-17 10:50:22

标签: c++ qt qml

问题在上面。我可以像这样在qml中创建2d数组:

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

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

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

但这不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用QVariantList并将其传递给qml:

QVariantList list;
list.append(QVariantList{5, 5, 6, 7});

答案 1 :(得分:1)

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

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

QVariant x = {0, 1, 2};

QVariant x{0, 1, 2};

尽管有specific type,所以您最好这样做:

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();