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