【问题标题】:QML File Browser QDirModel vs QFileSystemModelQML 文件浏览器 QDirModel 与 QFileSystemModel
【发布时间】:2013-07-26 16:20:49
【问题描述】:

我正在尝试实现基于 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 时它不起作用,也就是说,它不能正确显示文件。

【问题讨论】:

    标签: c++ qt qml


    【解决方案1】:

    你真的应该使用 QFileSystemModel。 但是如果你不知道怎么用,请仔细看文档,或者直接在QML中使用'FolderListModel'项,它在'Qt.labs.folderlistmodel 2.0'模块中,并且已经用于QML,而且很容易使用。我自己有一个用它制作的文件浏览器。

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2020-12-31
      • 2022-11-10
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2015-09-14
      • 2014-12-10
      相关资源
      最近更新 更多