From 4480f1d5b54a485bdb03cf0c114a6ef06fdd6afe Mon Sep 17 00:00:00 2001 From: tianzhendong <1203886034@qq.com> Date: Mon, 20 Jun 2022 09:09:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9readme=EF=BC=8C=E5=88=9B?= =?UTF-8?q?=E5=BB=BArelease?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 + CMakeLists.txt | 70 +++++ README.md | 52 ++++ assets/img.png | Bin 0 -> 19936 bytes assets/img_1.png | Bin 0 -> 37108 bytes assets/img_2.png | Bin 0 -> 38787 bytes resources/app_win32.rc | 1 + resources/close.png | Bin 0 -> 342 bytes resources/favicon.ico | Bin 0 -> 4286 bytes resources/fullscreen3.png | Bin 0 -> 352 bytes resources/fullscreen4.png | Bin 0 -> 357 bytes resources/img.qrc | 11 + resources/min.png | Bin 0 -> 150 bytes src/Rename.cpp | 145 ++++++++++ src/Rename.h | 57 ++++ src/main.cpp | 10 + src/widget.cpp | 252 +++++++++++++++++ src/widget.h | 76 ++++++ src/widget.ui | 549 ++++++++++++++++++++++++++++++++++++++ 19 files changed, 1227 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 README.md create mode 100644 assets/img.png create mode 100644 assets/img_1.png create mode 100644 assets/img_2.png create mode 100644 resources/app_win32.rc create mode 100644 resources/close.png create mode 100644 resources/favicon.ico create mode 100644 resources/fullscreen3.png create mode 100644 resources/fullscreen4.png create mode 100644 resources/img.qrc create mode 100644 resources/min.png create mode 100644 src/Rename.cpp create mode 100644 src/Rename.h create mode 100644 src/main.cpp create mode 100644 src/widget.cpp create mode 100644 src/widget.h create mode 100644 src/widget.ui diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5c50ebf --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/cmake-build-debug/ +/cmake-build-release/ +/.idea/ +/windeploy/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..cd41670 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,70 @@ +cmake_minimum_required(VERSION 3.22) +project(FileRename) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.14.2/5.14.2/mingw73_64") + +aux_source_directory(${PROJECT_SOURCE_DIR} DIR_MAIN_SRCS) +aux_source_directory(${PROJECT_SOURCE_DIR}/resources DIR_RESOURCES_SRCS) +aux_source_directory(${PROJECT_SOURCE_DIR}/src DIR_SRC_SRCS) + +find_package(Qt5 COMPONENTS + Core + Gui + Widgets + REQUIRED) + +# 添加qrc资源 +qt5_add_resources(QRC_FILES resources/img.qrc) + +#include_directories(resources +# src) + +IF (CMAKE_BUILD_TYPE STREQUAL Debug) + add_executable(${PROJECT_NAME} + resources/app_win32.rc + ${DIR_MAIN_SRCS} ${DIR_RESOURCES_SRCS} ${DIR_SRC_SRCS} ${QRC_FILES}) +else(CMAKE_BUILD_TYPE STREQUAL Release) + add_executable(${PROJECT_NAME} + WIN32 resources/app_win32.rc + ${DIR_MAIN_SRCS} ${DIR_RESOURCES_SRCS} ${DIR_SRC_SRCS} ${QRC_FILES}) +ENDIF() + +target_link_libraries(${PROJECT_NAME} + Qt5::Core + Qt5::Gui + Qt5::Widgets + ) + +if (WIN32) + set(DEBUG_SUFFIX) + if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug") + set(DEBUG_SUFFIX "d") + endif () + set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}") + if (NOT EXISTS "${QT_INSTALL_PATH}/bin") + set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..") + if (NOT EXISTS "${QT_INSTALL_PATH}/bin") + set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..") + endif () + endif () + if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll") + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory + "$/plugins/platforms/") + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll" + "$/plugins/platforms/") + endif () + foreach (QT_LIB Core Gui Widgets) + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "${QT_INSTALL_PATH}/bin/Qt5${QT_LIB}${DEBUG_SUFFIX}.dll" + "$") + endforeach (QT_LIB) +endif () diff --git a/README.md b/README.md new file mode 100644 index 0000000..0ba0ee6 --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +# 文件重命名工具 +![](./assets/img.png) +## 环境 +- Clion 2022.1.2 +- qt 5.14.2 + +## 功能 +- 单个文件重命名 +- 文件夹多个文件重命名 + +## 模式 +### 替换模式 +> 将文件名中的旧字符串替换为新字符串 + +旧字符串为空时,将文件名设置为新字符串 + +新字符串不能存在为:/\<>?*| + +新字符串不能为空 + +### 时间戳模式 + +> 将文件名中的UTC时间戳替换为北京时间:年月日时分秒 + +旧文件名用“-”连接,为:前段名-UTC时间戳.后缀 格式 + +程序会将UTC时间戳替换为北京时间年月日时分秒格式 + +新名:前段名-北京时间.后缀 + +## 重复文件处理 +当前文件夹有重复文件时,在新名后加“-旧名”字符串 + +## 使用 +deploy目录下为生成的程序,可以直接使用 +### 替换模式 +- 输入新旧字符串,选择替换模式,点击确认 +- 选择文件或者文件夹 +![](./assets/img_2.png) + +### 时间戳模式 +- 选择时间戳模式,点击确认 +- 选择文件或者文件夹 + +![](./assets/img_1.png) + +## 更改日志 +### 20220620 v1.0.2 +- [x] 新增打开文件目录功能(右下角listwidget支持) +- [x] 新增删除文件功能(右下角listwidget支持) + + diff --git a/assets/img.png b/assets/img.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc0f5f1f3bbaa819dc69564626b4ecfb4a10fcd GIT binary patch literal 19936 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 Iw7LI(0G@xB(*OVf literal 0 HcmV?d00001 diff --git a/assets/img_2.png b/assets/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c04a2f690084dfb32e5aff1fa753c1d94bf090 GIT binary patch literal 38787 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 Scoi@RoxZNIPLY=F)Bgj!9yxvh literal 0 HcmV?d00001 diff --git a/resources/app_win32.rc b/resources/app_win32.rc new file mode 100644 index 0000000..da3e7bc --- /dev/null +++ b/resources/app_win32.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "favicon.ico" \ No newline at end of file diff --git a/resources/close.png b/resources/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c839db4447c5a23cf79096fef2be74bbf6e0c4 GIT binary patch literal 342 zcmV-c0jd6pP)EgPo4e@tdiX$7!jJ)eH%lgX7y1vS o3;mDSHOq+KYJlJDf!=QO08#`ue3H3_7XSbN07*qoM6N<$g0j|&GXMYp literal 0 HcmV?d00001 diff --git a/resources/favicon.ico b/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4f497c59a101e9671abae72d53386bdef8f1f12a GIT binary patch literal 4286 zcmcIm2~q12%-jS6hR4sD7zq{C?IR1V2a>E z5Zb86)}YLJvfqo$3KCMRv$qkaAE%;5xO3HIon^UZtjzxV#%fA7EC z3&{8zH45S%yKMm#0B3?C_!2^HZ0xJIHo+w5`9DUZL7Yx!nWWc`N!05-Qk|SeFE0iTz%yTwHo4>Y<18L45-` zKbo9D1=7wLoHL8>p+qqIBhn29w;VUO9$2~; zA6NoJYa9uUlKND%#XLc$lM7I%f_7MNjrL2m+7~FZNYXo5#Ow4zu6)DM(TaQ1pS<#Q z?(T|QH#d2u*UQ)y)jd~t(!DXjd$DGau8Q7jLc*?4H6#hx7pB6s639Xo-l$g1g|u}r z&gVhavK}%YybNh4%%tz>as(R3H>`&2-g@BlO5n=c?%2A@sw05Ni7;zfhk#GB;Um=o zA1;UHPfOt0kOrTl$?!Ru3co!u&>TyKfx3Nbaw_xefs8=lS`NVZQ_ie} zH`jv?mchWa`~M*tF54quAjic0vCtn$!fe_W(wL56UkO?KtG%%UI~D=&F2cZLDVWr} z3Nz`uspOfoI~w+U4&i=4_@^|?7!zPDfPL5&4omuY%8n=)8dqRG`6qMDG3?WFFJ7XL ztcCxV2lURrXEDHi6Z@^)zXZyCu~2>x4+VV>>cy=hz})O{9fuMC+6Kmiyqx>8dK%=v zTL{IUmqJNjDMa2hWdNV_A^z7)0}AMa%5b1+f$7P$A$$TbfBfUT9beNtOm8A@=o=J< z0wu2jHIcxE*{0{NH#$c5{&XDyj2Q(?a02v00V~U{4`z89Dd-*hN%4opT5oR?B%<*gt{O0$-7nQ)5#Qk?oI-81Mf2|Du zpKnFpt#@$z&UUojt;RRR-|tkTrL7V*w8{O!PSg0O;h({EUfu{CSqrBt8?mmX0`V=I z5yWRu>t@8#mddZT0k*YodfK1PcTs(w z@2tL`Z%}_ve3$2}`mA`OT?&0=Q{-=jbe%n3w3PSRjNG}Vq0;-z?Nkh>9lxm0hu7O7 z{rs{#2F7LSR8={8bu&4?Ep$;oDsojzPols@-M+@4S`q1BYq>&ik3v^9Mq76i%sp7; z$2j+>ky-4XD9eC6FT2SFFAWOMHmK6G_3DaTCv|O} zv-%3T|3<$55D#;lRa;WEgVdR{q0D1Q4{TkCUavsr?Z{zh4b&lK zl$|B{&1b)8-3wdyT|?}67M2-f5yx}kz!*F$xbAMpkBx;`)V2-hI`}(38UF>+O<=mF zAHql2B1k;|AwvdqPx3QTE!`$+$q%~$)|lTg-~T0iac(`5nUn8z<`wVk|2Jbcl(r(3 zwfI@IxIkb(&!3&iux9N$A^dQm6q)qTjwksUr&kZH!7$b@DEgjueKJ$3<2m+Qq|(n4 zYuw7uDzLjVzt|V%OODvDxT$?o+2=u#yt`d0HRgm5^YOu%w-7J(qBB3&{>h0vIEt9v zu&~dn`#g~KK%9BQnF~!H7b5ERJNUALpML*=wR@g)%%qNYrDxu%mI4P>!j5ZS$1^sI z`~67p(;tr*3k9s5@_mex{Q1wE+Ndz^b>2_rL(aN9p1F5Qa0?qmecGP^D{)4PxO*Ng zf_KL>p64RAnBS=))>sGr$+NNW{Y+SKPjHE6=ksV|9m#u^cLC-!^WKMkzsnlf%GwmU zF$(g=BGdgxqkbOjz(U5pxKo{22M6ZdKE{0|YmBQ@4=~s9VLsq6`1x=Pt>L~#-LfOu zc=cil{7M(Wf m-$vlS1Vh6{%EnshB+Nodt_`?2R*DAfk<)+tPvGuoJJ|~{^IXrdYN;yHsdB*E+{t$S2#_5mt zJY}YkCHEUw7U^AK<7Qv(+cI-$LcY7y-+PsYd!Ap literal 0 HcmV?d00001 diff --git a/resources/fullscreen4.png b/resources/fullscreen4.png new file mode 100644 index 0000000000000000000000000000000000000000..401b0a8f5ac69832dc4cd47e8f6b204dc27654d7 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DX&fq_xn z)5S3)qw(!5M?S_t0hj+>1YJ_W{i4qC8^sZ9DfTTym(V63F#*GX|<<pOw;vC#QZQbr6}nI{-lELCJ)Fs+TJ0W6@&bC)UHp}zDNW8r$g z8wXZKC$N9HVO=|sNloXP-DJfmz}uP4L6=vO vVXH|B14Q8Q^Z#!W1Mj@!RJrE1ML)0oVNr95C|4LT+!#Dv{an^LB{Ts5i;;`= literal 0 HcmV?d00001 diff --git a/resources/img.qrc b/resources/img.qrc new file mode 100644 index 0000000..43e7a68 --- /dev/null +++ b/resources/img.qrc @@ -0,0 +1,11 @@ + + + favicon.ico + + + close.png + fullscreen3.png + fullscreen4.png + min.png + + \ No newline at end of file diff --git a/resources/min.png b/resources/min.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd7577319d7d1619456485387aa3ed985e20a17 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DWNDCpto z;uwbP0l+XkKV&N@Q literal 0 HcmV?d00001 diff --git a/src/Rename.cpp b/src/Rename.cpp new file mode 100644 index 0000000..5ce35f4 --- /dev/null +++ b/src/Rename.cpp @@ -0,0 +1,145 @@ +// +// Created by 12038 on 2022/6/16. +// +#include +#include "Rename.h" +#include + +Rename::Rename(QObject *) { + +} + +Rename::~Rename() { + +} + +void Rename::renameFileSlot(const QString &filePath, const QString &strReplaced, const QString &strNew) { +// filePath.lastIndexOf('/') + renameFile(filePath, strReplaced, strNew); +} + +void Rename::renameFile(const QString &filePath, const QString &strReplaced, const QString &strNew) { + QFile file(filePath); + QFileInfo fileInfo(filePath); + qDebug()< QDateTime::currentDateTime())){ + emit newFileNameSignal(tr("时间戳有误")); + return; + }; + QString time = dateTime.toString("yyyyMMddhhmmss"); //时间戳非毫秒级 + QString time1 = dateTime.toString("yyyy-MM-dd hh:mm:ss"); + qDebug() << time1; + + newBaseName = firstName + '-' +time; + } + else if(renameMethodFlag == "替换"){ + qDebug()<<"mode"<<"替换"; + if(!baseName.contains(strReplaced)) { + emit newFileNameSignal("文件名中不存在输入的字符串"); + return; + }; + if(strNew == ""){ + emit newFileNameSignal("新替换的字符串为空"); + return; + } + if(strReplaced == "") { + newBaseName = strNew; + } + else{ + newBaseName = baseName.replace(strReplaced, strNew); + qDebug()<<"newBaseName:"<getFiles(filesDirPath); +// emit oldFileNameSignal(files); + QStringList newFiles; + for (int i = 0; i < files.count(); i++){ + QString fileName = files.at(i); + emit oldFileNameSignal(fileName); + renameFile(fileName, strReplaced, strNew); +// emit newFileNameSignal(newFile); + emit process(i + 1, files.count()); + } +} + +QStringList Rename::getFiles(const QString &filesDirPath) { + QStringList files; + QDir filesDir(filesDirPath); + QList fileInfoList = filesDir.entryInfoList(QDir::Files); + for(int i = 0; i < fileInfoList.count(); i++){ + QFileInfo fileInfo = fileInfoList.at(i); + if(fileInfo.isDir()){ +// QStringList subFiles= getFiles(fileInfo.absoluteFilePath()); +// files.append(subFiles); + continue; + } + else{ + QString fileName = fileInfo.absoluteFilePath(); + files.append(fileName); + } + } + return files; +} + +void Rename::checkBoxChangedSlot(int) { + +} + +void Rename::comboxStateChangedSlot(const QString & text) { + renameMethodFlag = text; + qDebug()<< renameMethodFlag; +} + +void Rename::getTextSlot(const QString &text) { + qDebug()<<"widget当前的text为:"<< text; + currentText = text; +} + +void Rename::openDirSlot() { + QFileInfo fileInfo(currentText); + QString filePath = fileInfo.absolutePath(); + qDebug()<<"filePath"< +#include +#include +#include +#include +#include + +class Rename : public QObject{ +Q_OBJECT + +public: + Rename(QObject *parent = nullptr); + ~Rename(); + +signals: + void oldFileNameSignal(const QString &); + void newFileNameSignal(const QString &); + void process(const int &, const int &); + void singleFileSignal(const QString &); + + void delActionFeedbackSignal(bool delFlag); + + + +public slots: + void getFilesSlot(const QString & filesDirPath, const QString &strReplaced, const QString &strNew); + void renameFileSlot(const QString &filePath, const QString &strReplaced, const QString &strNew); + void checkBoxChangedSlot(int ); + void comboxStateChangedSlot(const QString &); + + void openDirSlot(); + void delActionTriggeredSlot(); + void getTextSlot(const QString &text); + +private: + void renameFile(const QString &filePath, const QString &strReplaced, const QString &strNew); + QStringList getFiles(const QString &); + + QStringList oldList = QStringList(); + QStringList newList = QStringList(); + + QString renameMethodFlag = "替换"; + QStringList dirFiles = QStringList(); + + QString currentText = ""; + +}; + + +#endif //DUPLICATEFILESCHECK_DUPLICATEFILES_H diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..a20479a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,10 @@ +#include +#include "widget.h" + +int main(int argc, char *argv[]) { + QApplication a(argc, argv); + qRegisterMetaType>("QHash"); + Widget w; + w.show(); + return QApplication::exec(); +} diff --git a/src/widget.cpp b/src/widget.cpp new file mode 100644 index 0000000..4943609 --- /dev/null +++ b/src/widget.cpp @@ -0,0 +1,252 @@ +// +// Created by 12038 on 2022/6/15. +// + +// You may need to build the project (run Qt uic code generator) to get "ui_Widget.h" resolved + +#include "widget.h" +#include "ui_widget.h" + +Widget::Widget(QWidget *parent) + : QWidget(parent) + , ui(new Ui::Widget) +{ + ui->setupUi(this); + //取消菜单栏 + this->setWindowFlags(Qt::FramelessWindowHint); + + //阴影边框效果 + QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(); + shadow->setBlurRadius(10); + shadow->setColor(Qt::black); + shadow->setOffset(0); + + ui->shadowWidget->setGraphicsEffect(shadow); + + //父窗口透明 + this->setAttribute(Qt::WA_TranslucentBackground); + + //最大化最小化关闭功能实现 + connect(ui->btnMax, SIGNAL(clicked()), this, SLOT(btnMaxClickedSlot())); + connect(ui->btnMin, SIGNAL(clicked()), this, SLOT(btnMinClickedSlot())); + connect(ui->btnClose, SIGNAL(clicked()), this, SLOT(btnCloseClickedSlot())); + + ui->btnMin->setStyleSheet("border-image: url(:/png/min.png)"); + ui->btnMax->setStyleSheet("border-image: url(:/png/fullscreen3.png)"); + ui->btnClose->setStyleSheet("border-image: url(:/png/close.png)"); + + + renameFile = new Rename(); + myThread = new QThread(); + renameFile->moveToThread(myThread); + myThread->start(); + connect(renameFile, SIGNAL(destroyed(QObject *)), + myThread, SLOT(deleteLater())); + +// ui->labelTitle->setText(" 文件重命名"); + connect(ui->btnSelectFile, SIGNAL(clicked(bool)), this, SLOT(selectFileClickedSlot())); + connect(ui->btnSelectDir, SIGNAL(clicked(bool)), this, SLOT(selectDirClickedSlot())); + connect(this, SIGNAL(fileSelectedSignal(const QString &, const QString &, const QString &)), + renameFile, SLOT(renameFileSlot(const QString &, const QString &, const QString &))); + + connect(this, SIGNAL(getFilesSignal(const QString &, const QString &, const QString &)), + renameFile, SLOT(getFilesSlot(const QString &, const QString &, const QString &))); + + + connect(renameFile, SIGNAL(process(const int &, const int &)), + this, SLOT(processSlot(const int &, const int &))); + connect(renameFile, SIGNAL(oldFileNameSignal(const QString &)), + this, SLOT(oldFileNameSlot(const QString &))); + connect(renameFile, SIGNAL(newFileNameSignal(const QString &)), + this, SLOT(newFileNameSlot(const QString &))); + connect(renameFile, SIGNAL(singleFileSignal(const QString &)), + this, SLOT(newFileNameSlot(const QString &))); + + connect(ui->comboBox, SIGNAL(currentTextChanged(QString)), + renameFile, SLOT(comboxStateChangedSlot(const QString &))); + + connect(ui->btnConfirm, SIGNAL(clicked()), + this, SLOT(btnConfirmClickedSlot())); + + ui->listWidget_2->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->listWidget_2, SIGNAL(customContextMenuRequested(const QPoint &)), + this, SLOT(on_listWidget_customContextMenuRequested(const QPoint &))); + + delAction = new QAction(); + delAction->setText("删除文件"); + openAction = new QAction(); + openAction->setText("打开文件目录"); + + connect(delAction, SIGNAL(triggered(bool)), + renameFile, SLOT(delActionTriggeredSlot())); + connect(ui->listWidget_2, SIGNAL(currentTextChanged(const QString &)), + renameFile, SLOT(getTextSlot(const QString &))); + connect(openAction, SIGNAL(triggered(bool)), + renameFile, SLOT(openDirSlot())); + connect(renameFile, SIGNAL(delActionFeedbackSignal(bool)), + this, SLOT(delActionFeedbackSlot(bool))); +} + +Widget::~Widget() +{ + renameFile->deleteLater(); + myThread->exit(); + myThread->wait(10 * 1000); + openAction->deleteLater(); + delAction->deleteLater(); + delete ui; +} + +void Widget::mousePressEvent(QMouseEvent *event) +{ +// QWidget::mousePressEvent(event); + QPoint mouseStartPoint = event->globalPos(); + QPoint windowLeftTopPoint = this->geometry().topLeft(); + this->mousePosInWindow = mouseStartPoint - windowLeftTopPoint; +} + +void Widget::mouseMoveEvent(QMouseEvent *event) +{ +// QWidget::mouseMoveEvent(event); + if(this->mousePosInWindow == QPoint()) return; + QPoint mousePoint = event->globalPos(); + QPoint windowLeftTopPoint = mousePoint - this->mousePosInWindow; + this->move(windowLeftTopPoint); +} + +void Widget::mouseReleaseEvent(QMouseEvent *) +{ + this->mousePosInWindow = QPoint(); +} + +void Widget::closeEvent(QCloseEvent *event) +{ + QMessageBox::StandardButton button; + button=QMessageBox::question(this,tr("退出程序"),QString(tr("确认退出程序?")),QMessageBox::Yes|QMessageBox::No); + if(button==QMessageBox::No) + { + event->ignore(); // 忽略退出信号,程序继续进行 + } + else if(button==QMessageBox::Yes) + { + event->accept(); // 接受退出信号,程序退出 + } +} + +void Widget::btnMaxClickedSlot() +{ + ui->btnMax->setStyleSheet("border-image: url(:/png/fullscreen4.png)"); + if(this->isMaximized()){ + ui->layoutMain->setMargin(9); + ui->btnMax->setStyleSheet("border-image: url(:/png/fullscreen3.png)"); + this->showNormal(); + } + else{ + ui->layoutMain->setMargin(0); + ui->btnMax->setStyleSheet("border-image: url(:/png/fullscreen4.png)"); + this->showMaximized(); + } +} + +void Widget::btnMinClickedSlot() +{ + this->showMinimized(); +} + +void Widget::btnCloseClickedSlot() +{ + this->close(); +} + +void Widget::selectFileClickedSlot() { + if(!confirmFlag){ + QMessageBox::information(this, "提示", "请先确认配置信息:模式为"+ui->comboBox->currentText()); + return; + } + QString path = QFileDialog::getOpenFileName( + this, "选择文件", + "", + ""); + if (path == "") return; + + ui->progressBar->setValue(0); + ui->listWidget->clear(); + ui->listWidget_2->clear(); + ui->listWidget->addItem(path); + + emit fileSelectedSignal(path, ui->leMd5Show->text(), ui->lineEdit->text()); +} + +void Widget::selectDirClickedSlot() { + if(!confirmFlag){ + QMessageBox::information(this, "提示", "请先确认配置信息:模式为"+ui->comboBox->currentText()); + return; + } + QString dirPathUrl = QFileDialog::getExistingDirectory(this, "选择文件夹", ""); + ui->lineDIrShow->setText(dirPathUrl); + if (dirPathUrl == "") return; + ui->progressBar->setValue(0); + ui->listWidget->clear(); + ui->listWidget_2->clear(); +// ui->leMd5Show->clear(); + emit getFilesSignal(dirPathUrl, ui->leMd5Show->text(), ui->lineEdit->text()); +} + +void Widget::processSlot(const int &now, const int &total) { + ui->progressBar->setMaximum(total); + ui->progressBar->setValue(now); +} + +void Widget::oldFileNameSlot(const QString &oldName) { + ui->listWidget->addItem(oldName); +} + +void Widget::newFileNameSlot(const QString &newName) { + ui->listWidget_2->addItem(newName); +} + +void Widget::btnConfirmClickedSlot() { + QString s = ui->lineEdit->text(); + if(s.contains('/') || s.contains('\\') || s.contains('<') || s.contains('>') || s.contains('?') || s.contains('*') || s.contains(':') || s.contains('|') || s.contains('"')){ + QMessageBox::critical(this, "错误", "文件名中不能包含/\\|<>:?*等字符"); + return; + } + confirmFlag = true; +} + +void Widget::on_listWidget_customContextMenuRequested(const QPoint &pos) +{ +// ui->listWidget_2->currentTextChanged() + QMenu *menu = new QMenu(this); +// menu->addAction(ui->actionAdd); +// menu->addAction(ui->actionClear); +// menu->addAction(ui->actionDelete); +// menu->addAction(ui->actionInsert); + + menu->addAction(this->openAction); + menu->addAction(this->delAction); +// menu->addSeparator(); + +// menu->addAction(ui->actionInit); +// menu->addSeparator(); +// menu->addAction(ui->actionSelAll); +// menu->addAction(ui->actionSelInv); +// menu->addAction(ui->actionSelNone); +// menu->addAction(ui->actionSelPopMenu); + menu->exec(QCursor::pos()); + delete menu; +} + +void Widget::delActionFeedbackSlot(bool flag) { + if(flag){ + qDebug()<<"remove item"; + QListWidgetItem * item = ui->listWidget_2->currentItem(); + qDebug()<listWidget_2->removeItemWidget(item); + delete item; + } +} + + + + diff --git a/src/widget.h b/src/widget.h new file mode 100644 index 0000000..bace91d --- /dev/null +++ b/src/widget.h @@ -0,0 +1,76 @@ +// +// Created by 12038 on 2022/6/15. +// + +#ifndef DUPLICATEFILESCHECK_WIDGET_H +#define DUPLICATEFILESCHECK_WIDGET_H + +#include +#include +#include +#include +#include +#include "Rename.h" +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class Widget; } +QT_END_NAMESPACE + +class Widget : public QWidget +{ +Q_OBJECT + +public: + Widget(QWidget *parent = nullptr); + ~Widget(); + +protected: + void mousePressEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + + void closeEvent(QCloseEvent *event); + +signals: + void fileSelectedSignal(const QString &path, const QString &strReplaced, const QString &strNew); + void getFilesSignal(const QString &dirPath, const QString &strReplaced, const QString &strNew); + void comboxStateChangedSignal(const QString &); + +public slots: + void processSlot(const int &, const int &); + void oldFileNameSlot(const QString & oldName); + void newFileNameSlot(const QString & newName); + + void delActionFeedbackSlot(bool flag); + +private slots: + void btnMaxClickedSlot(); + void btnMinClickedSlot(); + void btnCloseClickedSlot(); + void selectFileClickedSlot(); + void selectDirClickedSlot(); + void btnConfirmClickedSlot(); + + void on_listWidget_customContextMenuRequested(const QPoint &pos); + +private: + Ui::Widget *ui; + Rename * renameFile; + QThread *myThread; + + QPoint mousePosInWindow = QPoint(); + bool confirmFlag = false; + + QAction *delAction; + QAction *openAction; + + +}; + + +#endif //DUPLICATEFILESCHECK_WIDGET_H diff --git a/src/widget.ui b/src/widget.ui new file mode 100644 index 0000000..70ed4ee --- /dev/null +++ b/src/widget.ui @@ -0,0 +1,549 @@ + + + Widget + + + + 0 + 0 + 950 + 668 + + + + Widget + + + + 9 + + + 9 + + + 9 + + + 9 + + + + + #shadowWidget{ + background-color: rgb(255, 255, 255); + border-radius: 5px; + } + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 9 + + + 9 + + + + + + 0 + 0 + + + + + 微软雅黑 + 12 + + + + 文件重命名工具 + + + Qt::AlignCenter + + + + + + + + 32 + 32 + + + + + 32 + 32 + + + + + 14 + 50 + false + + + + QPushButton + { + border:none; +border-image: url(../resources/min.jpeg) + } + + QPushButton:hover + { + background-color: rgb(232, 232, 232); + } + QPushButton:pressed + { + background-color: rgb(162, 162, 162); + } + + + + + + + + + + + + + + false + + + + 30 + 10 + + + + + 30 + 10 + + + + + 14 + 50 + false + + + + QPushButton + { + border:none; + } + + QPushButton:hover + { + background-color: rgb(232, 232, 232); + } + QPushButton:pressed + { + background-color: rgb(162, 162, 162); + } + + + + + + + + + + + + + + + 32 + 32 + + + + + 32 + 32 + + + + + 14 + 50 + false + + + + QPushButton +{ + border:none; + border-image: url(../resources/fullscreen3.jpeg) +} +QPushButton:hover +{ + background-color: rgb(232, 232, 232); +} +QPushButton:pressed +{ + background-color: rgb(162, 162, 162); +} + + + + + + + + + + false + + + + 30 + 10 + + + + + 30 + 10 + + + + + 14 + 50 + false + + + + QPushButton + { + border:none; + } + + QPushButton:hover + { + background-color: rgb(232, 232, 232); + } + QPushButton:pressed + { + background-color: rgb(162, 162, 162); + } + + + + + + + + + + + + + + + 30 + 30 + + + + + 30 + 30 + + + + + 14 + 50 + false + + + + QPushButton + { + border:none; + border-top-right-radius: 5px; +border-image: url(../resources/close.jpeg) + } + + QPushButton:hover + { + background-color: rgb(253, 0, 0); + } + QPushButton:pressed + { + background-color: rgb(211, 0, 0); + } + + + + + + + + + + + + + + + + + 0 + 0 + + + + + 10 + + + + + + 10 + + + + Qt::LeftToRight + + + 配置 + + + Qt::AlignCenter + + + + + + + 12 + + + + false + + + false + + + + 替换 + + + + + 时间戳 + + + + + + + + + 12 + + + + + + + + + 12 + + + + + + + + + + + + 12 + + + + + + + + + 12 + + + + + + + + + + + + 12 + + + + QPushButton:hover +{ + background-color: #00aaff; +} +QPushButton:pressed +{ + background-color: rgb(0, 124, 186); + +} + + + 确认 + + + + + + + + + + + 10 + + + + 重命名 + + + Qt::AlignCenter + + + + + + + + + 12 + + + + QPushButton:hover +{ + background-color: #00aaff; +} +QPushButton:pressed +{ + background-color: rgb(0, 124, 186); + +} + + + 选择文件 + + + + + + + + 12 + + + + QPushButton:hover +{ + background-color: #00aaff; +} +QPushButton:pressed +{ + background-color: rgb(0, 124, 186); + +} + + + 选择目录 + + + + + + + + + + + + + + true + + + + + + + true + + + Qt::CustomContextMenu + + + + + + + + + 0 + + + + + + + + + + + + + + + + +