QFileSystemModel和Listview列出目录

时间:2019-02-07 12:53:56

标签: qt listview qml qfilesystemmodel

我在使用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);

有人可以帮忙吗?

0 个答案:

没有答案