Qt实现对文件进行遍历,获取文件名写入新文件

1.创建Qt继承自 QDialog 的项目.

2.直接贴代码吧,Qt5.7的环境,可以直接运行.

 

main.cpp的代码不做任何修改.

下面是 .h 文件的代码:

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include 

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MyDialog(QWidget *parent = 0);
    ~MyDialog();

private:
    Ui::MyDialog *ui;

public:
    void Traversal(QString);             //对文件夹进行遍历获取文件名称

private slots:
    void on_pushButton_clicked();        //三个按钮的槽
    void on_pushButton_2_clicked();
    void on_SelectBtn_clicked();

private:
    int pathSize;                        //一个全局int变量
};

#endif // MYDIALOG_H

下面是 .cpp 文件的代码 .

#include "mydialog.h"
#include "ui_mydialog.h"
#include 
#include 
#include 
#include 
#include 
#include 

MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);
}

MyDialog::~MyDialog()
{
    delete ui;
}

void MyDialog::on_pushButton_clicked()              //打开文件的按钮的方法
{
    QString folder_path = QFileDialog::getExistingDirectory(this,"Select Folders","E:\\KqPlannigDeal_QT\\include");         //获得选择文件夹的路径(路径可自定义)
    if(folder_path.isEmpty())
        return;
    else
        ui->lineEdit->setText(folder_path);        //获取编辑框的内容
}

void MyDialog::on_pushButton_2_clicked()            //生成 .h 文件 到指定文件夹下的按钮的方法
{
    QString path,path2;
    path = ui->lineEdit->text();                    //获取文本编辑框1的内容
    path2 = ui->lineEdit_2->text();                 //获取文本编辑框2的内容
    pathSize = path.size();

    if(path.isEmpty())
    {
        QMessageBox::warning(NULL,"warning","Please fill in the folder path!",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
        return;
    }
    else if(path2.isEmpty())
    {
        QMessageBox::warning(NULL,"warning","Please fill in the path of the generated file!",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
        return;
    }

    Traversal(path);                                    //开始遍历指定文件夹下的 .h 文件

    QMessageBox::information(NULL,"Tip","Successful creation of. h file",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
    return;
}

void MyDialog::Traversal(QString path)                //遍历文件夹里面的 .h 文件的方法
{
    QDir dir(path);
    QString RelativeRPath,ResultPath;
    QString saveFile,saveFolder;
    int index,FolderSize;
    foreach (QFileInfo mfi, dir.entryInfoList())
    {
        if(mfi.isFile() && mfi.suffix()=="h")        //判断文件不为空,后缀名为 .h 的文件(可自定义后缀实现查找指定后缀文件)
        {
            path = mfi.absoluteFilePath();
            RelativeRPath = path.mid(pathSize + 1);
            ResultPath = QString("#include \"%1\"").arg(RelativeRPath);
            //qDebug() <lineEdit->text();
            index = saveFolder.lastIndexOf('/');        //查找最后一个 '/' 的位置
            FolderSize = saveFolder.size();
            saveFolder = saveFolder.right(FolderSize - index) + ".h";    //获取最后一个 '/' 后面的文件 加上 '.h'

            //下面开始将获取的文件名写入到文件中
            saveFile = ui->lineEdit_2->text() + saveFolder;        //从编辑框2中获取保存的路径
            QFile file(saveFile);

            if(!file.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Append))
                QMessageBox::warning(this,"file write","can't open",QMessageBox::Yes);

            QTextStream in(&file);    //写入文件
            in<lineEdit_2->setText(folder_path);
}

下面是ui文件的控件的对象名 .

Qt实现对文件进行遍历,获取文件名写入新文件_第1张图片

使用说明 : 1.点击"打开"选择需要遍历文件的文件夹,选择完后路径就显示到lineEdit上面了.

                  2.点击"选择"选择需要将遍历的所有文件按照指定格式进行保存到创建的文件中.

                  3.点击"生成.h文件"就生成.h文件到指定路径下了.

效果如下:

Qt实现对文件进行遍历,获取文件名写入新文件_第2张图片

 

Qt实现对文件进行遍历,获取文件名写入新文件_第3张图片 繁华如三千东流水,我只取一瓢爱了解。《发如雪》

 

你可能感兴趣的:(♪,--,Qt)