为什么在setRootIndex之后QListView是空白的?

时间:2015-08-17 20:15:55

标签: c++ qt qt5 model-view

我有一个类似树的模型(如果iff非空,则总是高度为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现在可以在指定的索引处显示我的模型的子项。唉,它保持空白。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

最后,结果证明模型中出现了一个令人尴尬的错误:parent函数返回了错误的索引。