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

时间:2015-12-28 16:51:15

标签: list qt5.5 qvariant

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

1 个答案:

答案 0 :(得分:3)

自己找到解决方案。

这是由于QList的append重载:

  

void QList :: append(const QList&amp; value)

     

这是一个重载功能。

     

将值列表的项目追加到此列表中。

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

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