首页 > 解决方案 > 如何混合 QStandardItemModel

问题描述

我使用 QStandardItemModel 制作了一个 TreeView,如下图 A

在此处输入图像描述

我也有一个 QStandardItemModel 如下图 B

现在,我想将两个模型混合在一起,为 TreeView 创建一个新模型 在此处输入图像描述

新的 TreeView 如下图 C所示:

在此处输入图像描述

例子:

QStandardItemModel * fileTree = new QStandardItemModel();
QStandardItemModel * zipTree = new QStandardItemModel();
QStandardItemModel * fullTree = new QStandardItemModel();
......
......

fileTree 是 TreeView 图像 A 的模型;

zipTree 是 TreeView 图像 B 的模型;

如何混合它们为 TreeView 图像 C 制作 fullTree。

更新:

3个数据都有一个模型,只是数据不同。我想合并照片 C 表格 A + B 的数据。文件 a.zip -> 文件夹 a。并将a(图像B)的文件列表添加到新文件夹(a)

P/S:不要使用 QfileSystemModel

标签: qtqtreeviewqstandarditemmodelqstandarditem

解决方案


QTreeView t;
QStandardItemModel a;
t.setModel(&a);
t.show();

我简化了Image A,构造如下:

QStandardItem* folder1 = new QStandardItem("folder1");
QStandardItem* zip = new QStandardItem("a.zip");
a.appendRow(folder1);
folder1->appendRow(zip);

构造Image B

QStandardItemModel b;
b.appendRow(new QStandardItem("filea"));
b.appendRow(new QStandardItem("fileb"));
b.appendRow(new QStandardItem("filec"));

“混合”两者Image C

zip->setText(zip->text().remove(".zip"));
for (int i = 0; i < b.rowCount(); i++) {
    zip->appendRow(b.takeItem(i));
}

推荐阅读