将列表转换为 QVariant 或 QVariant 列表

12

我的问题是这样的。我有不同数字类型的列表,例如:

QList<qreal> mylist;

现在,我的代码中有一个函数,它期望一个QVariant参数,即mylist。我找到的唯一方法是使用for循环,将mylist中的所有数据添加到第二个列表中。

QList<QVariant> temp, 
例如,将temp作为参数传递。
我想知道是否有其他方法来做到这一点。
非常感谢。
1个回答

18
我曾多次遇到这种情况,据我所知唯一的方法是创建一个新列表。
如果您需要频繁地对不同类型的列表执行此操作,可以使用以下略微高级的方法:
template <typename T>
QVariantList toVariantList( const QList<T> &list )
{
    QVariantList newList;
    foreach( const T &item, list )
        newList << item;

    return newList;
}

这样当您调用接受QVariant列表的函数时,只需调用

myFunction( toVariantList(myList) );

请注意,给定的函数仅适用于可以隐式转换为QVariant的类型。

1
这正是我所担心的。谢谢! - aarelovich
3
注意QVariant本身已经能够将QList<T>转换为QVariantList。这意味着您也可以使用QVariant执行转换。 - Timo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接