2012-02-13 42 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

相关问题