当我尝试将QVariantList
嵌套在另一个QVariantList
中时,结果是两个列表的平面合并,而不是子列表。
演示代码:
QVariantList container;
QVariantList nested() << "bar" << "baz";
container.append("foo"); // or container << "foo";
container.append(nested); // or container << nested;
我获得的(缩进是我的):
QVariant(QVariantList,
QVariant(QString, "foo"),
QVariant(QString, "bar"),
QVariant(QString, "baz"),
)
我期待的是什么:
QVariant(QVariantList,
QVariant(QString, "foo"),
QVariant(QVariantList,
QVariant(QString, "bar"),
QVariant(QString, "baz")
)
)
答案 0 :(得分:3)
自己找到解决方案。
这是由于QList的append
重载:
void QList :: append(const QList&amp; value)
这是一个重载功能。
将值列表的项目追加到此列表中。
解决方案是使用insert
方法追加项目:
QVariantList l;
l.insert(l.size(), QVariant());