美文网首页
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模

项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模

作者: 红模仿_红胖子 | 来源:发表于2021-10-23 11:18 被阅读0次

需求

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

工具和源码下载地址

本篇文章的应用包和源码包可在以下地方下载:

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

#ifndefRENAMEFILEWIDGET_H#defineRENAMEFILEWIDGET_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>namespaceUi{classRenameFileWidget;}classRenameFileWidget:publicQWidget{Q_OBJECTpublic:explicitRenameFileWidget(QWidget*parent=0);~RenameFileWidget();protected:voidinitControls();protected:QStringListsearchFile(QString searchDir,boolsearchSubDir);protectedslots:voidslot_buttonClicked(QAbstractButton*pAbstractButton);privateslots:voidon_pushButton_browser_clicked();voidon_pushButton_reset_clicked();voidon_pushButton_search_clicked();voidon_pushButton_replace_clicked();voidon_checkBox_searchSubDir_clicked(boolchecked);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>#defineLOGqDebug()<<__FILE__<<__LINE__RenameFileWidget::RenameFileWidget(QWidget*parent):QWidget(parent),ui(newUi::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(){deleteui;}voidRenameFileWidget::initControls(){QButtonGroup*pButtonGroup=0;// 替换选择pButtonGroup=newQButtonGroup(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=newQStringListModel;_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();}voidRenameFileWidget::slot_buttonClicked(QAbstractButton*pAbstractButton){QRadioButton*pRadioButton=dynamic_cast<QRadioButton*>(pAbstractButton);if(!pRadioButton){LOG;return;}if(pRadioButton==ui->radioButton_replace){ui->lineEdit_replace->setEnabled(true);ui->lineEdit_replaceAddHead->setEnabled(false);ui->lineEdit_replaceAddEnd->setEnabled(false);}elseif(pRadioButton==ui->radioButton_replaceAddStart){ui->lineEdit_replace->setEnabled(false);ui->lineEdit_replaceAddHead->setEnabled(true);ui->lineEdit_replaceAddEnd->setEnabled(false);}elseif(pRadioButton==ui->radioButton_replaceAddEnd){ui->lineEdit_replace->setEnabled(false);ui->lineEdit_replaceAddHead->setEnabled(false);ui->lineEdit_replaceAddEnd->setEnabled(true);}}voidRenameFileWidget::on_pushButton_browser_clicked(){QString dir=ui->lineEdit_dirPath->text();dir=dir.mid(0,dir.lastIndexOf("/"));QString filePath=QFileDialog::getExistingDirectory(0,"选择搜索文件夹",dir);if(filePath.isEmpty()){return;}ui->lineEdit_dirPath->setText(filePath);}voidRenameFileWidget::on_pushButton_reset_clicked(){ui->lineEdit_contain->setText("");ui->lineEdit_endWith->setText("");ui->lineEdit_startWith->setText("");ui->lineEdit_replace->setText("");ui->lineEdit_replaceAddHead->setText("");ui->lineEdit_replaceAddEnd->setText("");ui->checkBox_contian->setChecked(true);ui->checkBox_startWith->setChecked(false);ui->checkBox_endWidth->setChecked(false);ui->checkBox_searchSubDir->setChecked(true);}voidRenameFileWidget::on_pushButton_search_clicked(){QStringList fileList=searchFile(ui->lineEdit_dirPath->text(),ui->checkBox_searchSubDir->isChecked());_fileList.clear();// 检测规则if(ui->checkBox_contian->isChecked()){for(intindex=0;index<fileList.size();index++){if(fileList.at(index).contains(ui->lineEdit_contain->text())){_fileList<<fileList.at(index);}}}if(ui->checkBox_startWith->isChecked()){for(intindex=0;index<fileList.size();index++){if(fileList.at(index).startsWith(ui->lineEdit_startWith->text())){_fileList<<fileList.at(index);}}}if(ui->checkBox_endWidth->isChecked()){for(intindex=0;index<fileList.size();index++){if(fileList.at(index).endsWith(ui->lineEdit_endWith->text())){_fileList<<fileList.at(index);}}}_pModel->setStringList(_fileList);ui->listView->setModel(_pModel);ui->label_number->setText(QString("%1").arg(_fileList.size()));}QStringListRenameFileWidget::searchFile(QString searchDir,boolsearchSubDir){QStringList listFile;if(searchDir.isEmpty()){returnlistFile;}// 迭代遍历指定目录下的文件,子目录也遍历QDirIteratoriter(searchDir,QDir::Files,searchSubDir?QDirIterator::Subdirectories:QDirIterator::NoIteratorFlags);while(iter.hasNext()){iter.next();QFileInfo info=iter.fileInfo();listFile<<info.absoluteFilePath();}returnlistFile;}voidRenameFileWidget::on_pushButton_replace_clicked(){for(intindex=0;index<_fileList.size();index++){QString fileName=_fileList.at(index);QString dir=fileName.left(fileName.lastIndexOf("/"));QString file=fileName.mid(fileName.lastIndexOf("/")+1);QString ext="";if(file.contains(".")){ext=file.mid(file.lastIndexOf(".")+1);file=file.left(file.lastIndexOf("."));}LOG<<fileName<<dir<<file<<ext;if(ui->radioButton_replace->isChecked()){file.replace(ui->lineEdit_contain->text(),ui->lineEdit_replace->text());QFile::rename(fileName,QString("%1/%2.%3").arg(dir).arg(file).arg(ext));}elseif(ui->radioButton_replaceAddStart->isChecked()){file.push_front(ui->lineEdit_replaceAddHead->text());QFile::rename(fileName,QString("%1/%2.%3").arg(dir).arg(file).arg(ext));}elseif(ui->radioButton_replaceAddEnd->isChecked()){file.push_front(ui->lineEdit_replaceAddEnd->text());QFile::rename(fileName,QString("%1/%2.%3").arg(dir).arg(file).arg(ext));}}}voidRenameFileWidget::on_checkBox_searchSubDir_clicked(boolchecked){ui->label_subDir->setText(checked?"是":"否");}

若该文为原创文章,转载请注明原文出处

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/120914785

相关文章

网友评论

      本文标题:项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模

      本文链接:https://www.haomeiwen.com/subject/szpkaltx.html