QT项目之文件重复检测

QT文件重复检测项目主要完成一个路径下的所有文件的检测,通过读取每个文件独有的属性Md5值完成重复文件的鉴别。

该项目主要涉及的知识点有;

1、无边框窗口的拖拽,阴影

(1)调用系统函数

    //主要完成去除系统默认边框,将自己定义的Widght加边框以及退出,放大缩小按钮
    //去掉系统边框
    this->setWindowFlags(Qt::FramelessWindowHint);
    //阴影边框类
    QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect();

(2)、实现鼠标的几个移动点击释放的几个事件,重写的时候记得加载父类之前的该函数

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    //调用父类的对应函数,
    QWidget::mouseMoveEvent(event);

    QPoint Mouus_Point = event->globalPos();

    QPoint Move_Point = Mouus_Point - Qpo_StadardPoint;//计算获取程序窗口距离桌面左上角的位置

    this->move(Move_Point);//将窗口移动到这个位置
}

void Widget::mousePressEvent(QMouseEvent *event)
{
    QWidget::mousePressEvent(event);

    QPoint Mouus_Point = event->globalPos();//获取鼠标距离桌面左上角的位置
    QPoint Widgt_Point = this->geometry().topLeft();//获取程序窗口左上角距离桌面左上角的位置
    this->Qpo_StadardPoint = Mouus_Point - Widgt_Point;
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    QWidget::mouseReleaseEvent(event);

    this->Qpo_StadardPoint = QPoint();//重置
}

(3)窗口最大最小化关闭的按钮点击事件的实现,

//按钮的关闭,最大,最小化
void Widget::on_btnClose_clicked()
{
    this->close();
}

void Widget::on_btnMax_clicked()
{
    if(this->isMaximized())
    {
        ui->vMain->setMargin(9);//设置边框阴影
        this->showNormal();
    }
    else
    {
        ui->vMain->setMargin(0);//设置边框阴影
        this->showMaximized();
    }
}

void Widget::on_btnMin_clicked()
{
    this->showMinimized();
}

2、一些控件的使用

布局的使用,QT的一些类型的时候(QByteArray,QHash,QString等等的使用)

3、信号与槽

(1)单纯的使用信号去为了调用槽函数

(2)通过信号传输值给槽函数去处理

4、线程的使用(处理UI线程与文件检测动作的线程,线程之间的信号结果的传递就是通过信号与槽来完成的)

暂时只使用了

  //开启线程
    thread.start();
    md5.moveToThread(&thread);//利用moveToThread方式将md5这个类加入到该线程中,则md5对象的操作都是在这个线程中操作了。

5、一个动态库的制作以及调用的一个流程步骤的完成、

在调用动态库的工程.pro中需要加入这个(去寻找动态库),并且需要将动态库文件以及其配套的头文件,链接文件放过来,下面有使用目录去寻找

# -L表示目录, -l表示库的名字,会自动寻找 lib + 库名 + .a的文件
LIBS += -L. -lShowLib1

猜你喜欢

转载自blog.csdn.net/zw1996/article/details/103090883