如何从所选目录(位于listWidget中)中筛选图像文件
How to filter image files from selected directory (which is inside listWidget)
我有一个问题,我不知道如何从选定的目录中筛选图像。我通常使用directory.setNameFilters({"*.png", "*.jpg"});
,但在这种情况下,我不能使用它,因为我需要在listWidget
中使用选定的目录。我使用信号和插槽功能。我的意思是,如果我单击listWidget
中的一个目录,该目录中的图像将显示在另一个listWidget
中。如果我单击另一个目录,它将执行相同的功能。请看一下我的代码。
QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home", QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
auto listWidget_images = new QListWidget();//set listwidget to display images
listWidget_images->setMinimumSize(1200,400);
listWidget_images->setViewMode(QListWidget::IconMode);
listWidget_images->setIconSize(QSize(320,240));
listWidget_images->setResizeMode(QListWidget::Adjust);
for(const QFileInfo & finfo: directory.entryInfoList()){
ui->listWidget_dirs->addItem(finfo.absoluteFilePath());
}
connect(ui->listWidget_dirs, & QListWidget::itemClicked,[listWidget_images,this](QListWidgetItem *item)
{
listWidget_images->show();
directory.setNameFilters({"*.png", "*.jpg"});
for(const QFileInfo & finfo: directory.entryInfoList()){
QListWidgetItem *item = new QListWidgetItem(QIcon(finfo.absoluteFilePath()), finfo.fileName());
listWidget_images->addItem(item);
}
});
您必须使用QListWidgetItem的文本创建QDir。
另一方面,用于获取子目录列表的方法在不区分文件和目录的情况下获取文件和目录,我已经修复了这一部分。
QString directory = QFileDialog::getExistingDirectory(this,
tr("Open Directory"),
QDir::homePath(),
QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
auto listWidget_images = new QListWidget();//set listwidget to display images
listWidget_images->setMinimumSize(1200,400);
listWidget_images->setViewMode(QListWidget::IconMode);
listWidget_images->setIconSize(QSize(320,240));
listWidget_images->setResizeMode(QListWidget::Adjust);
QDirIterator diter(directory, QDir::Dirs | QDir::NoDotAndDotDot);
while (diter.hasNext()) {
ui->listWidget_dirs->addItem(diter.next());
}
connect(ui->listWidget_dirs, &QListWidget::itemClicked,[listWidget_images](QListWidgetItem *item)
{
listWidget_images->show();
listWidget_images->clear();
QDir directory(item->text());
directory.setNameFilters({"*.png", "*.jpg"});
for(const QFileInfo & finfo: directory.entryInfoList()){
QListWidgetItem *item = new QListWidgetItem(QIcon(finfo.absoluteFilePath()), finfo.fileName());
listWidget_images->addItem(item);
}
});
相关文章:
- 输入验证以筛选出字符、字符串和一系列整数
- 参数包中的筛选器类型
- 筛选 QFileDialog 中显示的目录
- 筛选嵌套的动态元组(元组的动态元组)
- 如何从结构列表中筛选信息
- 通过QLineEdit筛选查询并更新QSqlQueryModel
- 如何从所选目录(位于listWidget中)中筛选图像文件
- 在 c++17 中筛选类型元组
- 不需要更改筛选器算法中的数据
- 在存储库中,筛选器函数返回动态向量或其他存储库
- 微筛选器从用户模式应用程序接收常量值
- 微筛选器无法阻止'Windows Photos'打开的图像
- C++可变参数模板类型筛选转换
- 点云库:计算筛选关键点 - 输入云错误
- 未调用微筛选器PRE_OP_CALLBACK
- OPENCV筛选未定义的参考问题
- 在内部使用ComboBox拖动ListWidget项目
- 图像的行筛选
- 从equal_range查询中筛选和修改 boost::multi_index 中的元素
- 微筛选器驱动程序不阻止文件版本