增加文件删除、打开目录功能
This commit is contained in:
2022-06-19 23:09:11 +08:00
parent 7fc424fe93
commit fc0badaa19
8 changed files with 105 additions and 2 deletions
+23
View File
@@ -1,7 +1,9 @@
//
// Created by 12038 on 2022/6/16.
//
#include <QProcess>
#include "DuplicateFiles.h"
#include <QUrl>
DuplicateFiles::DuplicateFiles(QObject *) {
@@ -73,3 +75,24 @@ QStringList DuplicateFiles::getFiles(const QString &filesDirPath) {
return files;
}
void DuplicateFiles::getTextSlot(const QString &text) {
qDebug()<<"widget_2当前的text为:"<< text;
currentText = text;
}
void DuplicateFiles::openDirSlot() {
QFileInfo fileInfo(currentText);
QString filePath = fileInfo.absolutePath();
qDebug()<<"filePath"<<filePath;
QString path = filePath.replace("/", "\\");
qDebug()<<"path"<<path;
QProcess::startDetached("explorer " + path);
}
void DuplicateFiles::delActionTriggeredSlot() {
QFile file(currentText);
qDebug()<<"即将删除:"<<currentText;
emit delActionFeedbackSignal(file.remove());
qDebug()<<"删除成功";
}
+6
View File
@@ -24,16 +24,22 @@ signals:
void filesSignal(const QStringList &);
void process(const int &, const int &);
void duplicateFilesSignal(const QHash<QByteArray, QStringList> &);
void delActionFeedbackSignal(bool delFlag);
public slots:
void getFilesSlot(const QString & filesDirPath);
void calMd5Slot(const QString &filePath);
void getTextSlot(const QString &);
void openDirSlot();
void delActionTriggeredSlot();
private:
QByteArray calMd5(const QString &filePath);
QStringList getFiles(const QString &);
QHash<QByteArray, QStringList> duplicateFiles;
QString currentText = "";
};
+52
View File
@@ -4,6 +4,7 @@
// You may need to build the project (run Qt uic code generator) to get "ui_Widget.h" resolved
#include <QProcess>
#include "widget.h"
#include "ui_widget.h"
@@ -61,6 +62,24 @@ Widget::Widget(QWidget *parent)
this, SLOT(duplicateFilesSlot(const QHash<QByteArray, QStringList> &)));
connect(ui->listWidget, SIGNAL(currentTextChanged(const QString &)),
this, SLOT(currentTextChangedSlot(const QString &)));
connect(ui->listWidget_2, SIGNAL(customContextMenuRequested(const QPoint &)),
this, SLOT(on_listWidget_customContextMenuRequested(const QPoint &)));
ui->listWidget_2->setContextMenuPolicy(Qt::CustomContextMenu);
delAction = new QAction();
delAction->setText("删除文件");
openAction = new QAction();
openAction->setText("打开文件目录");
connect(delAction, SIGNAL(triggered(bool)),
duplicateFiles, SLOT(delActionTriggeredSlot()));
connect(ui->listWidget_2, SIGNAL(currentTextChanged(const QString &)),
duplicateFiles, SLOT(getTextSlot(const QString &)));
connect(openAction, SIGNAL(triggered(bool)),
duplicateFiles, SLOT(openDirSlot()));
connect(duplicateFiles, SIGNAL(delActionFeedbackSignal(bool)),
this, SLOT(delActionFeedbackSlot(bool)));
}
Widget::~Widget()
@@ -68,6 +87,7 @@ Widget::~Widget()
duplicateFiles->deleteLater();
myThread->exit();
myThread->wait(10 * 1000);
delete ui;
}
@@ -175,4 +195,36 @@ void Widget::currentTextChangedSlot(const QString &currentText) {
ui->listWidget_2->addItems(this->duplicateResults[currentText.toLocal8Bit()]);
}
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->delAction);
menu->addAction(this->openAction);
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()<<item;
ui->listWidget_2->removeItemWidget(item);
delete item;
}
}
+7
View File
@@ -15,6 +15,7 @@
#include <QDebug>
#include <QThread>
#include <QFileDialog>
#include <QMenu>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
@@ -45,6 +46,7 @@ public slots:
void processSlot(const int &, const int &);
void duplicateFilesSlot(const QHash<QByteArray, QStringList> &);
void currentTextChangedSlot(const QString &);
void delActionFeedbackSlot(bool flag);
private slots:
void btnMaxClickedSlot();
@@ -53,6 +55,8 @@ private slots:
void calMd5ofFileSlot();
void selectDirSlot();
void on_listWidget_customContextMenuRequested(const QPoint &pos);
private:
Ui::Widget *ui;
DuplicateFiles * duplicateFiles;
@@ -61,6 +65,9 @@ private:
QPoint mousePosInWindow = QPoint();
QHash<QByteArray, QStringList> duplicateResults;
QAction *delAction;
QAction *openAction;
};
+5 -1
View File
@@ -386,7 +386,11 @@
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<widget class="QListWidget" name="listWidget_2"/>
<widget class="QListWidget" name="listWidget_2">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
</widget>
</item>
</layout>
</item>