QML文件浏览器QDirModel与QFileSystemModel

QML File Browser QDirModel vs QFileSystemModel

本文关键字:QFileSystemModel QDirModel 浏览器 文件 QML      更新时间:2023-10-16

我正在尝试实现一个基于QML的文件浏览器。在Qt 5.1中有两个文件模型,QDirModel和QFileSystemModel,对于QDirModel文档,表示

这个类已经过时了。提供它是为了保持旧的源代码正常工作。我们强烈建议不要在新代码中使用它。

我的代码适用于QDirModel,但不适用于QFileSystemModel,这是我的代码:

main.cpp

#include <QtWidgets/QApplication>
#include <QQuickView>
#include <QQmlContext>
#include <QFileSystemModel>
#include <QUrl>
#include <QDirModel>
int main(int argc, char *argv[]) 
{
QApplication a(argc, argv);
QQuickView view;
QDirModel model;
view.rootContext()->setContextProperty("dirModel", &model);
view.setSource(QUrl::fromLocalFile("main.qml"));
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.show();
return a.exec();
} 

这里是main.qml:

import QtQuick 2.0
Rectangle
{
    width: 400;
    height: 400;
    ListView
  {
    id: view;
    anchors.fill: parent;
    model: VisualDataModel
    {
      model: dirModel;
      delegate: Rectangle {
        width: parent.width;
        height: 40;
        Text
            {
                text: fileName
            }
      }
    }
  }
}

这段代码有效,但当我使用QFileSystemModel而不是QDirModel时,它就不起作用,也就是说,它不能正确显示文件。

您确实应该使用QFileSystemModel。但是,如果您不知道如何使用它,请更仔细地查看文档,或者直接在QML中使用"FolderListModel"项,它位于"Q.labs.FolderListModel 2.0"模块中,并且它已经在QML使用,而且非常容易使用。我自己有一个用它制作的文件浏览器。

相关文章:
  • 没有找到相关文章