Qt实现系统桌面目录下文件搜索的GUI:功能一:文件查找与现实(上)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt实现系统桌面目录下文件搜索的GUI:功能一:文件查找与现实(上)相关的知识,希望对你有一定的参考价值。

功能点一:文件查找与现实

0、知识点

1、 确定需求

  1. 在搜索栏输入关键字,快速搜索系统桌面目录里的文件和文件夹,展示在列表中,包含程序图标、名称、路径、大小信息。

注:

​ a. 文件夹无需展示大小

​ b. 搜索结果无需包含桌面文件夹中的子文件和子文件夹;

文件夹无需显示大小:

        // 大小
        QTableWidgetItem *sizeItem = nullptr;
        // 如果是目录则sizeItem值为空
        QFileInfo fileInfo(filePath);
        if(fileInfo.isDir())
            // 如果是目录,直接设置为nullptr, 不显示大小
            sizeItem = nullptr;
        else
            // 如果是目录,计算文件大小并设置为sizeItem
            sizeItem =  new QTableWidgetItem(tr("%1 KB")
                                             .arg(int((size + 1023) / 1024)));
            sizeItem->setData(absoluteFileNameRole, QVariant(filePath));
            sizeItem->setToolTip(toolTip);
            sizeItem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
            sizeItem->setFlags(sizeItem->flags() ^ Qt::ItemIsEditable);
        

2、 查找和文件目录选择

如果是只通过编写代码的话,就直接通过connect函数进行槽的绑定就可以啦。

这里主要尝试ui下的槽函数,可视化添加槽。

具体的槽函数实现功能:

// 当查找的按钮被触碰时触发的槽函数
void MainWindow::on_findButton_clicked()

    // 注意这里用的filesTable 是wiget类型的
    ui->filesTable->setRowCount(0);

    QString fileName = ui->fileComboBox->currentText();
    QString text = ui->textComboBox->currentText();
    QString path = QDir::cleanPath(ui->directoryCombox->currentText());

    // 查找并显示文件
    currentDir = QDir(path);

    // 更新目录
    watcher.removePath(currentDir.path());
    watcher.addPath(path);
    findFilesInDirectory(path, ui->fileComboBox->currentText(), ui->textComboBox->currentText());

    QStringList files;
    // 文件名进行查找文件
    findRecursion(path, fileName.isEmpty() ? QStringLiteral("*") : fileName, &files);
    // 在已经查找出的文件进一步查找哪些包含了text
    if(!text.isEmpty())
        files = findFiles(files, text);
    files.sort();
    showFiles(files);

以上是关于Qt实现系统桌面目录下文件搜索的GUI:功能一:文件查找与现实(上)的主要内容,如果未能解决你的问题,请参考以下文章

Debian 在没有桌面的情况下启动 Qt GUI 应用程序

Python Qt GUI设计:做一款串口调试助手(实战篇—1)

Python Qt GUI设计:做一款串口调试助手(实战篇—1)

现代 Java GUI 框架,如 WPF 或 Qt?

Python Qt GUI设计:QPainterQPenQBrush和QPixmap窗口绘图类(基础篇—17)

Python Qt GUI设计:QPainterQPenQBrush和QPixmap窗口绘图类(基础篇—17)