2012-02-13 15 views
10

Sorunum budur. Ben örneğin farklı sayısal türlerinin listesini vardır:Bir listenin QVariant veya QVariant List olarak dökülmesi

QList<qreal> mylist; 

Şimdi benim kodda ben mylist bir QVariant argüman beklediğini bir işlevi var. Bunu yapmak için bulduk tek yolu cyle için kullanan ve sadece örneğin ikinci listede

QList<QVariant> temp, 

için mylist tüm veriler eklenmesi ve bir Paramtre olarak temp geçirerek gereğidir.

Bunu yapmanın başka bir yolu olup olmadığını merak ediyordum.

Çok teşekkür ederim.

cevap

14

Bunu birkaç kez yapmam gerekti ve bilgime göre tek yol yeni bir liste oluşturmak.

bu size biraz meraklısı bir şey yapabileceğini listelerin türlerini değişen sık yapmam gereken bir şey ise: Eğer QVariant listesinde sürer işlevini çağırdığınızda

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

    return newList; 
} 

böylece, sadece can verilen işlevi yalnızca örtük QVariants dönüştürülebilir türleri için çalışacağını

myFunction(toVariantList(myList)); 

Not diyoruz.

+1

Korktuğum şey bu. Teşekkür ederim! – aarelovich

+0

Not QVariant'ın kendisi zaten QList 'dan' QVariantList'üne dönüştürebilir. Bu, dönüşüm gerçekleştirmek için QVariant'ı da kullanabileceğiniz anlamına gelir. – Dreamcooled

İlgili konular