我在使用QFileSystemModel和Listview(qml)时遇到问题。 我想使用2个列表视图: -一个列出目录的目录 -列出第一个视图中所选目录中可用文件的一个
首先,我试图在列表视图中列出目录,但是似乎rootIndex设置不正确,因为仅显示“ /”项:
在我的示例代码下面:
main.cpp:
QFileSystemModel *lDirModel = new QFileSystemModel();
QDir lDir = QDir("/home/toto");
lDirModel->setRootPath("/home/toto");
lDirModel->setFilter(QDir::AllEntries | QDir::AllDirs);
qml_engine->rootContext()->setContextProperty("mediaModel", lDirModel);
qml_engine->rootContext()->setContextProperty("mediaRootModel", lDirModel->index("/home/toto"));
media.qml
DelegateModel {
id: visualModel
model: mediaModel
rootIndex: mediaRootModel
delegate: Rectangle {
color: "red"
height: 40
width: 500
Text { text: "Name: " + filePath}
}
}
ListView {
anchors.fill: parent
clip: true
model: visualModel
}
即使不考虑rootIndex(它从“ /”开始),我也已经使用TreeView(qml)测试了它的“正常”效果
问题似乎出在ListView的rootIndex定义上。我不知道我哪里错了。通常,它必须正常工作。
我已经读过http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html,但是该示例是针对QAbstractListModel而不是QAbstractItemModel(QFileSystemModel继承的)
你知道我错了吗?
谢谢您的帮助。
编辑: 奇怪的是,使用qlistview可以正常工作并显示$ HOME内容:
QFileSystemModel *lModel = new QFileSystemModel();
QModelIndex lIndex = lModel->setRootPath("/home/toto");
_ui->recordsListView->setModel(lModel);
_ui->recordsListView->setRootIndex(lIndex);
有人可以帮忙吗?