我有一个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.有没有人知道我可能做错了什么?谢谢!
答案 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的一个怪癖......