我正在尝试实现基于 QML 的文件浏览器。Qt 5.1 中有两个文件模型,QDirModel 和 QFileSystemModel,对于 QDirModel 文档说
这个类已经过时了。提供它是为了保持旧的源代码正常工作。我们强烈建议不要在新代码中使用它。
我的代码适用于 QDirModel 但不适用于 QFileSystemModel,这是我的代码:
主文件
#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 时它不起作用,也就是说,它不能正确显示文件。