admin管理员组文章数量:1516870
这是一款基于QT开发的MD5校验工具,在这你可以学习到界面UI的设计方法,以及QT应对字符串的处理方法。以及如何去使用QT进行多线程的开发。
实现后的程序运行截图:
MD5.pro工程文件
#-------------------------------------------------
#
# Project created by QtCreator 2020-09-25T14:41:18
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MD5
TEMPLATE = app
RC_ICONS = MD5.ico
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
SOURCES += \
main.cpp \
md5test.cpp \
md5thread.cpp
HEADERS += \
md5test.h \
md5thread.h
FORMS +=
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
image.qrc
md5Test.h文件
#ifndef MD5TEST_H
#define MD5TEST_H
#include <QWidget>
#include <QPushButton>
#include <qgroupbox.h>
#include <qlineedit.h>
#include <qlabel.h>
#include <qgridlayout.h>
#include <qtablewidget.h>
#include <QVBoxLayout>
#include <QFileInfo>
#include <qdebug.h>
#include <QErrorMessage>
#include <QFileDialog>
#include <qdir.h>
#include <qerrormessage.h>
#include <QDirIterator>
#include <QEvent>
#include <QPaintEvent>
#include <QHBoxLayout>
#include <QTreeWidget>
#include <QStackedWidget>
#include <QProgressBar>
#include "md5thread.h"
class md5Test : public QWidget
{
Q_OBJECT
signals:
void md5ErrorSignal(QString);
void openMd5Thread();
void sendPath(QString);
private slots:
void searchDir();
void startTest();
void checkself(QTreeWidgetItem* ,int);
void threadFinished();
void rcevData_1(QString ,QString);//接收文件对应MD5
void recvData_5(QString,QString,QDateTime);//接收text文件中获取的MD5
void recvData_3(QString,QString);//接收不匹配的MD5
void recvData_4(QString,QString);//接收新的MD5
void recvData_2(QString,QString);//接收匹配的MD5
public:
explicit md5Test(QWidget *parent = nullptr);
~md5Test();
void viewFileMd5();//文件及对应MD5
void viewTextMd5();//txt文件中的md5
void viewMismatchMd5();//显示不匹配MD5表格
void viewNewMd5();//显示新的MD5表格
void viewMatchMd5();//显示匹配MD5表格
void initTable();//初始化表格
void clearTableRow();//删除所有行
private:
QTableWidget *tablewidget;
QTableWidget *tablewidget_1;//匹配的
QTableWidget *tablewidget_2;//不匹配的
QTableWidget *tablewidget_3;//新的
QTableWidget *tablewidget_4;//抓取的
QPushButton *pushbutton;
QPushButton *testbtn;
QGroupBox *groupbox;
QLineEdit *searchPathLineedit;
QLineEdit *mismatchMd5NumLineEdit;
QLineEdit *matchMd5NumLineEdit;
QLineEdit *newMd5NumLineEdit;
QLineEdit *sumMd5NumLineEdit;
QLabel *searchPathLabel;
QLabel *mismatchMd5Label;
QLabel *matchMd5Label;
QLabel *newMd5Label;
QLabel *sumMd5Label;
QLabel *mainwindowtitle;
QVBoxLayout *layout;
QGridLayout *layout_2;
QString msg;
QString path;
QTreeWidget *treewidget;
QHBoxLayout *hlayout;
QStackedWidget *stackwidget;
QWidget *mainwidget;
QProgressBar *progressbar;
md5Thread m_thread;
bool ok = false;
int provalue = 0;
int row,row_1,row_2,row_3,row_4;
};
#endif // MD5TEST_H
md5Test.cpp
#include "md5test.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QHBoxLayout>
#include <QHeaderView>
#define WINDOWTITLE "MD5检验"
md5Test::md5Test(QWidget *parent) :
QWidget(parent)
{
int wW = 1200;
int hW = 800;
this->resize(wW,hW);
setWindowTitle(WINDOWTITLE);
setWindowIcon(QIcon(":/new/prefix1/images/mainwidget.png"));
//setWindowFlag(Qt::FramelessWindowHint,true);
row = 0;
row_1 = 0;
row_2 = 0;
row_3 = 0;
row_4 = 0;
QFont font;
font.setFamily("黑体");
font.setPixelSize(16);
setFont(font);
stackwidget = ne版权声明:本文标题:Qt实践:构建强大的MD5校验应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1772669996a3276379.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论