有没有办法将QStandardItemModel复制到另一个QStandardItemModel? 或者我必须迭代每个tem并将其附加到另一个模型?
答案 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)
您可以使用后续步骤复制现有项目:
或者只使用QStandardItem::clone()
方法。如有必要,重新实现它。