QVariantList.append() 合并列表而不是嵌套

QVariantList.append() merges list instead of nesting

当我尝试将一个 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")
  )
)

自己找到解决方案。

这是由于 QList 的 append 过载:

void QList::append(const QList & value)

This is an overloaded function.

Appends the items of the value list to this list.

解决方案是使用 insert 方法追加项目:

QVariantList l;
l.insert(l.size(), QVariant());