0
点赞
收藏
分享

微信扫一扫

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

⭐️我叫恒心,一名喜欢书写博客的研究生在读生。

原创不易~转载麻烦注明出处,并告知作者,谢谢!!!

这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧。

在这里插入图片描述

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

0、知识点

  • 打开文件管理器进行目录选择
  • 记忆下拉框的内容
  • filetable使用
  • 文件信息显示
  • 文件图标的获取
  • 自定义排序

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,
// 在已经查找出的文件进一步查找哪些包含了text
if(!text.isEmpty())
files = findFiles(files, text);
files.sort();
showFiles(files);
}

最后 🐶狗头保命

一名喜欢书写博客的研究生在读生

如果觉得有用,麻烦三连支持一下欧,希望这篇文章可以帮到你,你的点赞是我持续更新的动力

举报

相关推荐

0 条评论