1、准备工作:
首先,在ui界面文件上添加如下控件:两个label、一个LineEdit、一个pushButton
2、代码:
核心代码:
void MainWindow::OpenImg()
{
QString OpenFile, OpenFilePath;
QImage image;
//打开文件夹中的图片文件
OpenFile = QFileDialog::getOpenFileName(this,
"Please choose an image file",
"",
"Image Files(*.jpg *.png *.bmp *.pgm *.pbm);;All(*.*)");
if( OpenFile != "" )
{
if( image.load(OpenFile) )
{
ui->label->setPixmap(QPixmap::fromImage(image));
}
}
//显示所示图片的路径
QFileInfo OpenFileInfo;
OpenFileInfo = QFileInfo(OpenFile);
OpenFilePath = OpenFileInfo.filePath();
ui->lineEdit->setText(OpenFilePath);
}
QString QFileDialog::getOpenFileName()函数原型及参数说明:
QString QFileDialog::getOpenFileName (
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0 )
。第一个参数parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值NULL;
。第二个参数是对话框的标题;
。第三个参数dir,是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:\“等;例如我想打开程序运行目录下的Data文件夹作为默认打开路径,这里应该写成”./Data/",若想有一个默认选中的文件,则在目录后添加文件名即可:"./Data/teaser.graph"
。第四个参数filter,是对话框的后缀名过滤器,比如我们使用"Image Files(.jpg .png)“就让它只能显示后缀名是jpg或者png的文件。如果需要使用多个过滤器,使用”;;“分割,比如"JPEG Files(.jpg);;PNG Files(.png)”;
。第五个参数selectedFilter,是默认选择的过滤器;
。第六个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。
完整工程如下:
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QFileInfo>
#include <QImage>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void OpenImg();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(OpenImg()));
}
void MainWindow::OpenImg()
{
QString OpenFile, OpenFilePath;
QImage image;
//打开文件夹中的图片文件
OpenFile = QFileDialog::getOpenFileName(this,
"Please choose an image file",
"",
"Image Files(*.jpg *.png *.bmp *.pgm *.pbm);;All(*.*)");
if( OpenFile != "" )
{
if( image.load(OpenFile) )
{
ui->label->setPixmap(QPixmap::fromImage(image));
}
}
//显示所示图片的路径
QFileInfo OpenFileInfo;
OpenFileInfo = QFileInfo(OpenFile);
OpenFilePath = OpenFileInfo.filePath();
ui->lineEdit->setText(OpenFilePath);
}
MainWindow::~MainWindow()
{
delete ui;
}
3、效果
参考:https://blog.csdn.net/iamplane/article/details/71535683