2012-02-13 10 views
10

Il mio problema è questo. Ho liste di diversi tipi numerici, ad esempio:Lanciare un elenco come QVariant o QVariant List

QList<qreal> mylist; 

Ora, nel mio codice ho una funzione che che si aspetta un argomento che è QVariant myList. L'unico modo che ho trovato per farlo è quello di utilizzare un per cyle e semplicemente aggiungendo tutti i dati in mylist al secondo elenco

QList<QVariant> temp, 

per esempio, e passando temperatura come paramter.

Mi chiedevo se ci fosse un altro modo per farlo.

Grazie mille.

risposta

14

Ho dovuto farlo più volte e, a mia conoscenza, l'unico modo è creare una nuova lista.

Se questo è qualcosa che dovete fare spesso con diversi tipi di elenchi che si potrebbe fare qualcosa di un po 'di fantasia:

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

    return newList; 
} 

in modo che quando si chiama la funzione che prende nella lista QVariant, si può solo chiamare

myFunction(toVariantList(myList)); 

si noti che la funzione data funziona solo per i tipi che possono essere convertiti in modo implicito QVariants.

+1

È quello che temevo. Grazie! – aarelovich

+0

Nota QVariant è già in grado di convertire da 'QList ' a 'QVariantList'. Ciò significa che puoi anche utilizzare QVariant per eseguire la conversione. – Dreamcooled

Problemi correlati