Вопрос выше. Я могу создать 2d массив в qml следующим образом:

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

Итак, как я могу создать такой массив в C ++? Я попытался:

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

Но это не работает.

1
John Smith 17 Апр 2019 в 13:50

2 ответа

Лучший ответ

Вы можете использовать QVariantList, который можно передать в qml:

QVariantList list;
list.append(QVariantList{5, 5, 6, 7});
1
Nejat 17 Апр 2019 в 11:43

Проблема в том, что 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();
1
p-a-o-l-o 17 Апр 2019 в 11:47