首页 > 代码库 > 7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子
7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子
任务:
1.新建一个空的mainwindow项目
2.debug下编译得到一个文件夹,应用程序输出这个文件夹中的文件(不显示文件夹中的文件夹)
3.使用QFileSystemModel完成。
本例显示结果:
Makefile
Makefile.Debug
Makefile.Release
ui_mainwindow
(debug和release是文件夹,不在应用程序输出中)
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDebug> #include <QDir> #include <QFileSystemModel> #include <QModelIndex> #include <QFileInfo> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QFileSystemModel *model; private slots: void findDirectory(const QString &path); }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); model = new QFileSystemModel(); model->setRootPath(QDir::currentPath()); //这里直接调用rowCount函数返回0, //QFileSystemModel是异步载入目录,当directoryLoaded信号发射之后,表示目录载入完成 //所以我们在槽中调用rowCount,返回正确的值。 connect(model, SIGNAL(directoryLoaded(QString)), this, SLOT(findDirectory(QString))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::findDirectory(const QString &path) { QModelIndex parentIndex = model->index(QDir::currentPath()); int row = model->rowCount(parentIndex); for(int i = 0; i<row; i++) { QModelIndex index = model->index(i, 0, parentIndex); QString text = index.data(Qt::DisplayRole).toString(); QString fullPath = QDir::currentPath().append("/").append(text); QFileInfo *fileInfo = new QFileInfo(fullPath); if(fileInfo->isFile()) qDebug() << text; } }
main.cpp
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
程序输出:
7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。