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