Detección de duplicación de archivos de proyecto QT

El proyecto de detección de archivos duplicados QT completa principalmente la detección de todos los archivos bajo una ruta y completa la identificación de archivos duplicados leyendo el valor del atributo único Md5 de cada archivo.

Los principales puntos de conocimiento involucrados en este proyecto son:

1. Arrastra y suelta ventanas sin bordes, sombras

(1) Funciones del sistema de llamada

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

(2). Realice varios eventos de movimiento del mouse, haga clic y suelte. Al reescribir, recuerde cargar la función antes que la clase principal

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) La realización del evento de clic de botón cuando la ventana está maximizada o minimizada,

//按钮的关闭,最大,最小化
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. El uso de algunos controles

El uso de diseño, algunos tipos de QT (el uso de QByteArray, QHash, QString, etc.)

3. Señales y ranuras

(1) Simplemente use señales para llamar a funciones de tragamonedas

(2) Transmita el valor a la función de ranura a través de la señal para su procesamiento.

4. El uso de subprocesos (subprocesos que procesan subprocesos de UI y acciones de detección de archivos, y la transmisión de los resultados de la señal entre subprocesos se realiza a través de señales y ranuras)

Solo usado temporalmente

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

5. La producción de una biblioteca dinámica y la finalización de un paso del proceso llamado,

Debe agregar esto en el proyecto .pro que llama a la biblioteca dinámica (para encontrar la biblioteca dinámica), y debe colocar el archivo de biblioteca dinámica y sus archivos de encabezado de soporte, archivos de enlace y usar el directorio a continuación para encontrar

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

 

Supongo que te gusta

Origin blog.csdn.net/zw1996/article/details/103090883
Recomendado
Clasificación