当前位置: 首页 > news >正文

网站修改如何建网站遂宁

网站修改,如何建网站遂宁,建设领域现场专业人员报名网站,策划案需要给做网站吗QT-监测文件内容重复工具 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "widget.h" #include "ui_widget.h" #include <QDir> #include <QFile> #include <QCryptographicHash> #include <QApplicatio…

QT-监测文件内容重复工具

  • 一、演示效果
  • 二、核心代码
  • 三、下载链接


一、演示效果

在这里插入图片描述

二、核心代码

#include "widget.h"
#include "ui_widget.h"
#include <QDir>
#include <QFile>
#include <QCryptographicHash>
#include <QApplication>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <QCloseEvent>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);thread.start();md5.moveToThread(&thread);//跨線程傳遞自定義類型/模板時,要使用下列方法先注冊,否則會報錯qRegisterMetaType<QHash<QByteArray,QStringList>>("QHash<QByteArray,QStringList>");/** 按下按鈕->發送&Widget::checkDumplate( 信號 )* &Widget::checkDumplate( 信號 )與&FileMd5::checkDumplate( 槽 )相連接* &FileMd5::checkDumplate( 槽 )發送 &FileMd5::gotDumplate( 信號 )* &FileMd5::gotDumplate( 信號 )與&Widget::onGotDumplate( 槽 )相連接* 最後:&Widget::onGotDumplate( 槽 )將重複文件的hash添加到listWidget中*/connect(this,&Widget::checkDumplate,&md5,&FileMd5::checkDumplate);connect(&md5,&FileMd5::gotDumplate,this,&Widget::onGotDumplate);connect(&md5,&FileMd5::process,this,&Widget::onProcess);}Widget::~Widget()
{//關閉線程thread.exit();thread.wait();delete ui;
}void Widget::closeEvent(QCloseEvent *event)
{if(!isDone){QMessageBox::warning(this,"警告","文件加載中,請物關閉窗口");//忽略這個事件,當前窗口不會關閉event->ignore();}else{//接收這個事件,當前窗口會關閉event->accept();}}void Widget::on_pushButton_clicked()
{ui->progressBar->setValue(0);ui->listWidget->clear();//判斷是否有文件正在加載if(!isDone){QMessageBox::warning(this,"警告","年輕人別太心急,我跑不動了");return;}isDone = false;//選擇目錄QString path = QFileDialog::getExistingDirectory(this,"Choose Dir",".");ui->lineEdit->setText(path);emit checkDumplate(path);
}void Widget::onGotDumplate(const QHash<QByteArray, QStringList> &dumplates)
{this->dumplates = dumplates;for(QHash<QByteArray,QStringList>::const_iterator it = dumplates.begin(); it != dumplates.end(); it++){if(it.value().count()>1){ui->listWidget->addItem(it.key());}}if(ui->listWidget->count()==0){ui->listWidget->addItem("沒有重複的文件");}}void Widget::onProcess(int current, int total)
{ui->progressBar->setValue(current);ui->progressBar->setMaximum(total);if(current == total){isDone = true;}
}void Widget::on_listWidget_currentTextChanged(const QString &currentText)
{ui->listWidget_2->clear();QStringList fileList = this->dumplates[currentText.toLocal8Bit()];ui->listWidget_2->addItems(fileList);
}
#include "FileMd5.h"
#include <QFileInfo>
#include <QDir>
#include <QCryptographicHash>
#include <QApplication>
#include <QDebug>FileMd5::FileMd5(QObject *parent) : QObject(parent)
{}void FileMd5::checkDumplate(const QString &path)
{//寫代碼檢測文件重複QHash<QByteArray,QStringList> ret;QStringList files = getFiles(path);for(int i = 0; i < files.count(); i++){QString fileName = files.at(i);QByteArray md5 = getFileMd5(fileName);ret[md5].append(fileName);emit process(i+1,files.count());}emit gotDumplate(ret);
}QStringList FileMd5::getFiles(const QString &path)
{QStringList ret;QDir dir(path);//.表示當前目錄,..表示上一級目錄//entryInfoList:返回目錄中所有文件和目錄的QFileInfo對象列表QFileInfoList infoList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);for(int i=0; i < infoList.count(); i++){QFileInfo info = infoList.at(i);if(info.isDir()){QString subDir = info.absoluteFilePath();QStringList files = getFiles(subDir);ret.append(files);}else{QString fileName = info.absoluteFilePath();ret.append(fileName);}}return ret;
}QByteArray FileMd5::getFileMd5(const QString &fileName)
{QFile file(fileName);if(!file.open(QIODevice::ReadOnly)){return QByteArray();}QCryptographicHash hash(QCryptographicHash::Md5);while(!file.atEnd()){QByteArray content = file.read(100 * 1024 * 1024); //一次讀取100MB的內容hash.addData(content); //將content的數據添加到密碼散列qApp->processEvents(); //防止整個程序卡住(作用不大)}QByteArray md5 = hash.result().toHex(); //獲取最終的哈希值file.close();return md5;
}

三、下载链接

https://download.csdn.net/download/u013083044/89654075

http://www.yayakq.cn/news/845199/

相关文章:

  • 如今做哪些网站致富共享的网站备案
  • 北京做公司网站公司网站降权的原因
  • 做网站的前端技术网站开发职业访谈
  • 珠海集团网站建设报价百度站长平台查询
  • 化妆品网站内容规划网络营销教案
  • ps做网站图片什么是电子商务网站
  • 响应式网站图解图片网站cms
  • 织梦网站源码wordpress 文章 自定义排序
  • 建企业网站怎么收费郑州网络公司现状
  • 中小企业网站建设公司首选最简单的wordpress
  • tp框架做商城网站怎么用缓存上海网站开发设计培训
  • 设计介绍人的网站京津冀协同发展交通一体化规划
  • 便利的集团网站建设在线观看免费网站
  • 哪里有网站开发服务器网站分析步骤
  • 网站开发外文参考文献外贸销售模式
  • 免费搭建网站教程网站空间 windows linux
  • 汕头建站网站加速代码
  • 5118素材网站googleseo优化
  • 网站内页的设计山东省建设执业注册中心网站
  • 做门户网站建设多少钱seo电商运营是什么意思
  • 网站被收录又被取消了济南建设网中标公告
  • 提升审美网站拓者设计吧app
  • 做慕斯蛋糕那个网站有视频创网中国的网站
  • 零基础自己做网站编写网站方案设计书表格
  • 企业网站建设套餐 网络服务免费虚拟房屋设计软件
  • 交互设计师网站如何开个公司网站
  • 网站建设孝感网站根目录有哪些
  • 手机网站 asp济南商城网站开发
  • 怎么建立国外网站58同城深圳招聘网站
  • 湖州市建设局网站6折页在线设计平台