Преобразование QList в QVariant

Класс содержит это:

Q_PROPERTY(QList<double> switch1 READ switch1 WRITE setSwitch1 NOTIFY switch1Changed)

void setSwitch2(QList<double> arg)
{
if (m_switch2 != arg)
{
m_switch2 = arg;
emit switch2Changed(arg);
}
}

Ниже работает:

setSwitch2(QList<double>::fromVector(QVector<double>::fromStdVector(data->switch2)));

но теперь мой тип данных QVariantList вместо QList<double>,

Как мне заменить QList на QVariant сейчас?

Это не работает:

setSwitch1(QVariantList::fromVector(QVector<QVariant>::fromStdVector(data->switch1)));

4

Решение

Просто используйте этот конструктор:

QVariant :: QVariant (const QList & вал)

Создает новый вариант со значением списка, val.

То есть при сохранении QList в качестве QVariant тип шаблона QList должен быть типом, который подходит для QVariant. Для этого нет другого конструктора или метода преобразования.

Вы должны написать это:

QVariant variant(
QList<double>::fromVector(QVector<double>::fromStdVector(data->switch2))
);

setSwitchVariant(variant);
3

Другие решения

Если нет необходимости конструктор:

QList<QUrl> params;
QVariant varParams;
varParams.setValue<QList<QUrl>>( params );
0

По вопросам рекламы [email protected]