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

本文标签: 实践系统编程