本文共 1955 字,大约阅读时间需要 6 分钟。
在使用电脑的时候,有时候我们需要删除文件和文件夹,手动操作一个一个的删除就比较麻烦,有时候某个特定的文件还删除不了,写一个程序来实现删除功能就方便很多,Qt里就有自带的类可以方便的执行删除功能,下面来看具体的示例:
#ifndef MAINWINDOW_H#define MAINWINDOW_H#includeQT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr); ~MainWindow();protected: bool deleteDir(const QString &path);public slots: void slotDeleteDirAndFile();private: Ui::MainWindow *ui; int m_fileCount; //统计删除文件的个数};#endif // MAINWINDOW_H
#include "mainwindow.h"#include "ui_mainwindow.h"#include#include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(slotDeleteDirAndFile()));}MainWindow::~MainWindow(){ delete ui;}void MainWindow::slotDeleteDirAndFile(){ QString path = "C:\\Users\\Administrator\\AppData\\Local\\Temp"; deleteDir(path);}bool MainWindow::deleteDir(const QString &path){ if (path.isEmpty()){ return false; } QDir dir(path); if(!dir.exists()){ return true; } dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤 QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息 foreach (QFileInfo file, fileList){ //遍历文件信息 if (file.isFile()){ // 是文件,删除 bool isDelete = file.dir().remove(file.fileName()); if(isDelete) { m_fileCount++; } qDebug() << "isDelete= " << isDelete << " m_fileCount = " << m_fileCount << " filename= " << file.fileName(); }else{ // 递归删除 deleteDir(file.absoluteFilePath()); } } return dir.rmpath(dir.absolutePath()); // 删除文件夹}
main.cpp文件
#include "mainwindow.h"#includeint main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
转载地址:http://briub.baihongyu.com/