Qt QVariant toList无效

时间:2013-10-30 14:06:53

标签: qt

我有一个Qt(4.7)程序,它使用QByteArray并在使用解析器将其转换为QVariant后将其分解为QVariants列表。当我尝试使用toList()函数时,似乎出现了问题。我有类似的东西:

QVariant var = //whatever the value passed in is...
std::cout << "Data = " << var.toString().toStdString() << std::endl;
QList<QVariant> varlist = var.toList();
std::cout << "List Size = " << varlist.size() << std::endl;

将返回此信息:

Data = variant1 variant2 variant3
Size = 0

大小应该明显是3.有没有人知道我可能做错了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

toList()的文档说:

  

如果变体具有userType()QMetaType :: QVariantList或QMetaType :: QStringList,则将变量作为QVariantList返回;否则返回一个空列表。

我的猜测是,你的变体userType()不是这两个。

您可能需要以不同方式构建变体,例如

QVariantList list;
list << variant1 << variant2 << variant3;
QVariant var = list;

答案 1 :(得分:0)

所以,我不知道为什么,但是当我将上面指定的命令放入一个单独的函数,即QList<QVariant> myClass::ToList(QVariant v){return v.toList();},然后调用varlist = myClass::ToList(v)时,它就可以了。仍然没有原来的方式,但这种方式很好。猜猜我只是把它归结为Qt的一个怪癖......