У меня проблема с использованием 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
}
Я также протестировал его с TreeView (qml), он «работает», даже если rootIndex не учитывается (он начинается с «/»)
Проблема, кажется, наопределение rootIndex в ListView.Я не знаю, где я не прав.Обычно это должно работать.
Я прочитал 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);
Кто-нибудь может помочь?