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变量中