1

我有一个 Qt (4.7) 程序,它需要一个 QByteArray,并在使用解析器将其转换为 QVariant 之后将其分解为 QVariant 列表。当我尝试使用 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。有谁知道我可能做错了什么?谢谢!

4

2 回答 2

2

toList() 的文档说:

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

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

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

QVariantList list;
list << variant1 << variant2 << variant3;
QVariant var = list;
于 2013-10-30T14:14:18.900 回答
0

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

于 2013-10-30T15:35:48.163 回答