Перечисление списка как QVariant или QVariant List

Моя проблема в этом. У меня есть списки разных числовых типов, например:

QList<qreal> mylist;

Теперь в моем коде у меня есть функция, которая ожидает аргумент QVariant, который является mylist. Единственный способ, который я нашел для этого, - использовать для cyle и просто добавить все данные в список mylist во второй список

QList<QVariant> temp, 

например, и передавая temp в качестве параметра.

Мне было интересно, есть ли другой способ сделать это.

Большое спасибо.

Ответ 1

Мне приходилось делать это несколько раз, и, насколько мне известно, единственный способ - создать новый список.

Если это то, что вам нужно делать часто с разными типами списков, вы можете сделать что-то немного странное:

template <typename T>
QVariantList toVariantList( const QList<T> &list )
{
    QVariantList newList;
    foreach( const T &item, list )
        newList << item;

    return newList;
}

чтобы при вызове вашей функции, которая входит в список QVariant, вы можете просто вызвать

myFunction( toVariantList(myList) );

Обратите внимание, что данная функция будет работать только для типов, которые могут быть неявно преобразованы в QVariants.