项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加)

时间:2024-02-25 09:55:42

需求

  在整理文件和一些其他头文件的时候,需要对其名称进行整理和修改,此工具很早就应该写了,创业后,非常忙,今天抽空写了一个顺便提供给学习。

 

工具和源码下载地址

  本篇文章的应用包和源码包可在以下地方下载:
  CSDN免积分下载地址:https://download.csdn.net/download/qq21497936/33864537
  QQ群下载地址:1047134658(点击“文件”搜索“renameFile”,群内与博文同步更新)

 

Demo v1.2.0

  1.window批量改名工具(理论上兼容ubuntu,arm,但是本司未测)
  2.支持选择搜索的文件夹
  3.支持搜索子文件夹
  4.支持匹配方式:包含,前面匹配,后面匹配
  5.支持修改方式:替换包含的内容,前面追加文本,后面追加文本

 

Demo v1.2.0演示

  请添加图片描述
  请添加图片描述

 

核心代码

RenameFileWidget.h

#ifndef RENAMEFILEWIDGET_H
#define RENAMEFILEWIDGET_H

/************************************************************\
 * 控件名称: 文件改名小工具
 * 控件描述:
 *          window批量改名工具(理论上兼容ubuntu,arm,但是本司未测)
 * 控件功能:
 *          1.支持选择搜索的文件夹
 *          2.支持搜索子文件夹
 *          3.支持匹配方式:包含,前面匹配,后面匹配
 *          4.支持修改方式:替换包含的内容,前面追加文本,后面追加文本
 * 著作权信息
 *      作者:红胖子(AAA红模仿)
 *      公司:长沙红胖子网络科技有限公司
 *      网址:hpzwl.blog.csdn.net
 *      联系方式:QQ(21497936) 微信(yangsir198808) 电话(15173255813)
 * 版本信息
 *       日期             版本           描述
 *   2021年10月22日      v1.2.0        基本功能,样式
\************************************************************/

#include <QWidget>
#include <QAbstractButton>
#include <QStringListModel>

namespace Ui {
class RenameFileWidget;
}

class RenameFileWidget : public QWidget
{
    Q_OBJECT

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

protected:
    void initControls();

protected:
    QStringList searchFile(QString searchDir, bool searchSubDir);

protected slots:
    void slot_buttonClicked(QAbstractButton *pAbstractButton);

private slots:
    void on_pushButton_browser_clicked();
    void on_pushButton_reset_clicked();
    void on_pushButton_search_clicked();
    void on_pushButton_replace_clicked();
    void on_checkBox_searchSubDir_clicked(bool checked);

private:
    Ui::RenameFileWidget *ui;

private:
    QStringList _fileList;
    QStringListModel *_pModel;
};

#endif // RENAMEFILEWIDGET_H

RenameFileWidget.cpp

#include "RenameFileWidget.h"
#include "ui_RenameFileWidget.h"
#include <QFileDialog>
#include <QButtonGroup>
#include <QStringListModel>
#include <QDir>
#include <QDirIterator>

#include <QDebug>
#define LOG qDebug()<<__FILE__<<__LINE__

RenameFileWidget::RenameFileWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RenameFileWidget),
    _pModel(0)
{
    ui->setupUi(this);

    QString version = "v1.2.0";
    setWindowTitle(QString("文件改名工具 %1 (长沙红胖子网络科技有限公司 QQ:21497936 微信:yangsir198808 公司网址: hpzwl.blog.csdn.net)")
                   .arg(version));


    initControls();
}

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

void RenameFileWidget::initControls()
{
    QButtonGroup *pButtonGroup = 0;

    // 替换选择
    pButtonGroup = new QButtonGroup(this);
    pButtonGroup->addButton(ui->radioButton_replace);
    pButtonGroup->addButton(ui->radioButton_replaceAddStart);
    pButtonGroup->addButton(ui->radioButton_replaceAddEnd);
    connect(pButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)),
            this, SLOT(slot_buttonClicked(QAbstractButton*)));

    // 更新控件
    _pModel = new QStringListModel;
    _pModel->setStringList(_fileList);
    ui->listView->setModel(_pModel);

    // 初始化
    ui->radioButton_replace->setChecked(true);
    ui->lineEdit_replace->setEnabled(true);
    ui->lineEdit_replaceAddHead->setEnabled(false);
    ui->lineEdit_replaceAddEnd->setEnabled(false);

    on_pushButton_reset_clicked();
}



void RenameFileWidget::slot_buttonClicked(QAbstractButton *pAbstractButton)
{
    QRadioButton *pRadioButton = dynamic_cast<QRadioButton *>(pAbstractButton);
    if(!pRadioButton)
    {
        LOG;
        return;
    }
    if(pRadioButton == ui->radioButton_replace)
    {
        ui->lineEdit_replace