为什么QListView空白后setRootIndex

Why is QListView blank after setRootIndex?

本文关键字:setRootIndex 空白 QListView 为什么      更新时间:2023-10-16

我有一个树状模型(如果非空则高度始终为2)。在树视图中,数据被正确显示。但是,我想在两个ListViews中显示数据,dupFilesOverviewdupFilesDetailview: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现在在指定索引处显示我的模型的子节点。唉,它还是一片空白。我还遗漏了什么吗?

最后证明是模型中一个令人尴尬的误差:parent函数返回了错误的索引