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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章