QT从对话框中读取多张图片

QT版本:Qt 5.5.1 (MSVC 2013, 32 bit)
Qt Creator版本:Qt Creator 3.5.1 (opensource)
系统:win10
实现功能:
1.界面点击“open”按钮——弹出对话框供用户选择文件——用户选择多张图片文件——界面显示其中一张
实例代码如下:
头文件需要包含:

#include <QFileDialog>
#include <QList>
#include <QString>

头文件中定义全局变量:

QList<QImage>   m_qlistLoadImgs;//用来存放用户选择的图片
QPixmap *m_crtPixmap; //显示其中某张图片用

界面操作:
1.在界面上放一个Label控件,更名为label_pic
2.在界面放一个PushButton按钮,更名为open

右击按钮——转到槽——选择clicked()——点击OK
在按钮按单击的曹函数中如下编写:

   QFileDialog fileDlg(this);
    fileDlg.setWindowTitle("Choose Pictures");
    QStringList qstrFilters;//设置文件过滤器的list
    qstrFilters<<"Image files(*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm)";
    qstrFilters<<"Any files (*)";
    fileDlg.setNameFilters(qstrFilters);//设置文件过滤器
    fileDlg.setFileMode(QFileDialog::ExistingFiles);//设置能选择多个文件,如果是单个文件就写成QFileDialog::ExistingFile
    if(fileDlg.exec() == QDialog::Accepted)
    {
        QStringList strPathList = fileDlg.selectedFiles();//得到用户选择的多个文件的路径的list
        if(!m_qlistLoadImgs.empty())
        {
            m_qlistLoadImgs.clear();
        }
        QPixmap pixmapTemp;
        for(int i = 0;i<strPathList.count();i++)
        {
            pixmapTemp.load(strPathList[i]);
            m_qlistLoadImgs.push_back(pixmapTemp.toImage());
        }
        m_crtPixmap = new QPixmap(strPathList.at(0));//为了显示第一张图
        if(NULL != m_crtPixmap)
        {
            int with = ui->label_pic->width();
            int height = ui->label_pic->height();
            QPixmap fitpixmap = m_crtPixmap->scaled(with, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);  // 将图片缩放后饱满填充到label_pic控件大小
            ui->label_pic->setPixmap(fitpixmap);//显示第一张图
        }
    }
    else
    {
        QMessageBox mesg;
        mesg.warning(this,"警告","打开图片失败!");
        return;
    }

上述代码执行完之后,用户选择的所有图片就都存在了m_qlistLoadImgs变量中

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值