将QStandardItemModel复制到另一个

时间:2014-09-17 06:06:56

标签: qt qstandarditemmodel

有没有办法将QStandardItemModel复制到另一个QStandardItemModel? 或者我必须迭代每个tem并将其附加到另一个模型?

2 个答案:

答案 0 :(得分:7)

项目只能由一个模型拥有。这就是为什么您需要创建每个项目的副本并将其放置到另一个模型。您可以使用方法QStandardItem::clone来完成。

这是单列模型的示例:

void copy(QStandardItemModel* from, QStandardItemModel* to)
{
   to->clear();
   for (int i = 0 ; i < from->rowCount() ; i++)
   {
      to->appendRow(from->item(i)->clone());
   }
}

编辑:
如果要在链接视图中保留标题数据和列大小,请使用to->removeRows(0, to->rowCount ());代替to->clear();

答案 1 :(得分:1)

您可以使用后续步骤复制现有项目:

  1. 获取现有项目。
  2. 创建新项目。
  3. 将必要的数据角色从现有项目设置为新项目。
  4. 对旗帜做同样的事。
  5. 或者只使用QStandardItem::clone()方法。如有必要,重新实现它。