QListWidget显示文件夹内容,选择文件并显示文件夹下图片

博主使用的编译器是Qt直接进行ui界面的设计。

先进行一下效果展示

20230328

这里使用了两个QListWidget,左边的用做显示文件信息,右边的做显示文件夹下的图片,这里的图片是保存的拍摄视频的第一帧,通过双击显示图片,点机打开视频可以查看视频。

在构造中实现左边QListWidget遍历文件内容显示文件夹,将所有的文件夹信息获取打印在窗口中

//获取文件夹下所有文件夹并显示
    QStringList num;
    QString dirPath=("./shoot");
    QDir dir(dirPath);
    dirPath = dir.fromNativeSeparators(dirPath);//  "\\"转为"/"
    if (!dir.exists()) num = QStringList("");
    dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
    dir.setSorting(QDir::Name);
    num = dir.entryList();
    ui->listWidget_2->setViewMode(QListView::IconMode);
    ui->listWidget_2->addItems(num);
    //设置自动适应布局调整(Adjust适应,Fixed不适应),默认不适应
    ui->listWidget_2->setResizeMode(QListWidget::Adjust);
    //设置不能移动
    ui->listWidget_2->setMovement(QListWidget::Static);
    //竖向滚动条
    ui->listWidget_2->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

访问的文件夹下的内容

实现的效果:

显示文件夹下的图片这个功能,这里是增加了一个按钮作为响应的,通过信号和槽函数使另一个QListWidget显示图片,当然也可以直接使用QListWidget里是函数直接做跳转。

这里的按钮函数逻辑是:清空窗口,获取选中的成员信息,访问该成员文件夹下内容,遍历所有的图片文件,保存到容器中,在显示容器中内容。

void playback::on_pushButton_3_clicked()
{
    //每次点击将listwidget清空
    int counter =ui->listWidget->count();
    for(int index=0;index<counter;index++)
    {
        QListWidgetItem *item = ui->listWidget->takeItem(0);
        delete item;
    }
    QString arr=ui->listWidget_2->currentItem()->text();
    QDir * imagePath=new QDir("./shoot/"+arr);
    QStringList filter;
    filter << "*.jpg"<< "*.png"  ;
    QList<QFileInfo> *fileInfo=new QList<QFileInfo>(imagePath->entryInfoList(filter));
    int imageSum = fileInfo->count();
    QList<QString>  fileNames;
    fileNames.clear();
    if(imageSum == 0)
    {
        return;
    }
    for(int i=0;i<imageSum;i++)
    {
        fileNames.append(fileInfo->at(i).filePath());
    }
    for(auto tmp : fileNames)
    {
        ui->listWidget->addItem(new QListWidgetItem(QIcon(tmp),tmp));
    }
}

文件夹下内容:

 其中avi文件为视频文件,图片是保存的视频第一帧,窗口中也显示的是第一帧图片,通过图片获取视频打开播放。

显示效果文件夹下的图片文件只有两个因此只显示了两个成员:

 在这个窗口通过双击成员可以查看图片,效果:

 这里就是用QListWidget中的函数响应:(窗口是我自己定义的类)

void playback::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
    QString arr=ui->listWidget->currentItem()->text();
    String str=arr.toStdString();
    a.ps(str);
    this->hide();
    a.show();
}

 上面的打开视频按钮就可以查看视频了,并且可以进行快进慢放等常规功能。

 本期文章就到这了下期见了!!!

猜你喜欢

转载自blog.csdn.net/m0_64596200/article/details/129823825