2012-02-13 16 views
10

Mi problema es esto. Tengo una lista de diferentes tipos numéricos, por ejemplo:Lanzando una lista como QVariant o QVariant List

QList<qreal> mylist; 

Ahora, en mi código que tienen una función que espera que un argumento que es QVariant milista. La única manera que he encontrado para hacer esto es mediante el uso de un ciclo del producto sanitario para y simplemente añadir todos los datos en milista a segunda lista

QList<QVariant> temp, 

por ejemplo, y que pasa como parametro temp.

Me preguntaba si había alguna otra forma de hacerlo.

Muchas gracias.

Respuesta

14

He tenido que hacer esto varias veces y, que yo sepa, la única manera es crear una nueva lista.

Si esto es algo que tiene que hacer con frecuencia con diferentes tipos de listas que podría hacer algo un poco más lujoso:

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

    return newList; 
} 

de manera que cuando se llama a la función que se lleva en la lista QVariant, que sólo puede llamar

myFunction(toVariantList(myList)); 

Tenga en cuenta que la función dada sólo funcionará para los tipos que se pueden convertir implícitamente a QVariants.

+1

Es lo que temí. ¡Gracias! – aarelovich

+0

Nota QVariant ya puede convertir de 'QList ' a 'QVariantList'. Esto significa que también podría usar QVariant para realizar la conversión. – Dreamcooled

Cuestiones relacionadas