Vic*_*lio 4 list qvariant qt5.5
当我尝试将 a 嵌套QVariantList在 another 中时QVariantList,结果是两个列表的平面合并,而不是子列表。
演示代码:
QVariantList container;
QVariantList nested() << "bar" << "baz";
container.append("foo"); // or container << "foo";
container.append(nested); // or container << nested;
Run Code Online (Sandbox Code Playgroud)
我得到了什么(缩进是我的):
QVariant(QVariantList,
QVariant(QString, "foo"),
QVariant(QString, "bar"),
QVariant(QString, "baz"),
)
Run Code Online (Sandbox Code Playgroud)
我期望什么:
QVariant(QVariantList,
QVariant(QString, "foo"),
QVariant(QVariantList,
QVariant(QString, "bar"),
QVariant(QString, "baz")
)
)
Run Code Online (Sandbox Code Playgroud)
自己找到了解决方案。
这是由于 QList 的append过载造成的:
void QList::append(const QList & value)
这是一个过载功能。
将值列表的项目附加到此列表。
解决方案是使用insert方法附加项目:
QVariantList l;
l.insert(l.size(), QVariant());
Run Code Online (Sandbox Code Playgroud)