2012-02-13 27 views
10

我的問題是這樣的。我有不同的數字類型的列表,例如:將列表投射爲QVariant或QVariant列表

QList<qreal> mylist; 

現在,在我的代碼我有期望一個的QVariant參數,它是一個MYLIST功能。我發現這樣做的唯一方法是使用了cyle和簡單地增加所有MYLIST數據的第二列表

QList<QVariant> temp, 

例如,並通過溫度的參數中。

我想知道是否有其他方式來做到這一點。

非常感謝。

回答

14

我不得不這樣做了好幾次,據我所知,唯一的辦法是創建一個新列表。

如果這是你必須有不同類型的列表,你可以做一些票友一點經常做一些事情:

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工種。

+1

這是我所害怕的。謝謝! – aarelovich 2012-02-13 20:28:24

+0

注意QVariant本身已經能夠從'QList '轉換爲'QVariantList'。這意味着你也可以使用QVariant來執行轉換。 – Dreamcooled 2015-09-24 15:17:23