如何混合QStandardItemModel

时间:2018-04-26 11:07:49

标签: qt qtreeview qstandarditemmodel qstandarditem

我使用QStandardItemModel创建了一个TreeView,如下面的图像A

enter image description here

我还有一个QStandardItemModel,如下图图像B

现在,我想将两个模型混合在一起,为TreeView创建一个新模型 enter image description here

新的TreeView类似于图像C

enter image description here

示例:

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 - >文件夹并将(图像B)的文件列表添加到新文件夹(a)

P / S:不要使用QfileSystemModel

1 个答案:

答案 0 :(得分:1)

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));
}