QFileSystemModel и Listview для вывода списка каталогов - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблема с использованием 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);

Кто-нибудь может помочь?

...