【发布时间】:2015-08-17 20:15:54
【问题描述】:
我有一个树状模型(如果非空,其高度始终为 2)。在树形视图中,数据正确显示。但是,我想在两个 ListView 中显示数据,dupFilesOverview 和 dupFilesDetailview:
dupFilesOverview 显示深度为 1 的元素,而 dupFileDetailView 应显示概览中所选元素的子元素。
为此,我目前正在使用以下代码(其中 dm 是我的模型):
ui.dupFilesOverview->setModel(&dm);
ui.dupFilesDetailview->setModel(&dm)
QObject::connect(ui.dupFilesOverview->selectionModel(), &QItemSelectionModel::selectionChanged, [&ui, &dm](const QItemSelection& selection) {
QModelIndex index =selection.indexes().first();
ui.dupFilesDetailview->setRootIndex(index);
});
通过一些 qDebug 输出,
qDebug() << index << dm.data(index, Qt::DisplayRole) << dm.hasChildren(index) << dm.data(index.child(1,0), Qt::DisplayRole);
我验证了我获得的索引确实是我想要的:它是有效的并且有预期的孩子。从文档中,我希望dupFilesDetailDetailview 现在在指定索引处显示我的模型的子代。唉,它反而保持空白。有什么我遗漏的吗?
【问题讨论】:
-
您唯一缺少的就是重现问题的测试用例。你做错了什么,但如果你不显示你正在做的代码,那是相当绝望的:(你在这里显示的代码是正确的。你需要包含模型的整个代码,并且如果你这样做,任何设置或数据填充。
标签: c++ qt qt5 model-view