#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QDebug>
#include <QFile>
#include <QFileInfo>
#include <QListWidget>
#include <QListWidgetItem>
#include <QDir>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void write_listwidget(QString str);
private slots:
void on_open_dir_clicked();
private:
Ui::MainWindow *ui;
};
#endif
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_open_dir_clicked()
{
QString str=QFileDialog::getExistingDirectory(this,"打开目录或文件");
ui->show_dir_path->setText(str);
write_listwidget(str);
}
void MainWindow::write_listwidget(QString str)
{
QDir dir(str);
QFileInfoList list=dir.entryInfoList();
QFileInfoList::const_iterator it=list.begin();
QStringList dir_name= dir.entryList(QDir::Dirs);
dir_name.removeOne(".");
dir_name.removeOne("..");
QStringList::iterator dt=dir_name.begin();
while(it!=list.end())
{
QFileInfo info(*it);
if(info.isDir())
{
if(dt!=dir_name.end())
{
qDebug()<<"目录名:"<<*dt;
QListWidgetItem *file=new QListWidgetItem(QIcon(":/dir.bmp"),*dt,ui->listWidget);
QString path=it->path()+"/"+*dt;
qDebug()<<"目录路径"<<path;
write_listwidget(path);
dt++;
}
}
else
{
qDebug()<<"文件名:"<<it->fileName()<<"文件大小"<<it->size()<<"k";
QString str;
str=str+it->fileName()+it->size();
QListWidgetItem *file=new QListWidgetItem(QIcon(":/file.bmp"),str,ui->listWidget);
}
it++;
}
}