Qt--打开文件对话框读取图片并显示读取路径

编程知识 更新时间:2023-04-07 17:43:45

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/iamplane/article/details/71535683

更多推荐

Qt--打开文件对话框读取图片并显示读取路径

本文发布于:2023-04-07 17:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/0d3fb49ae1e06f160d0c4324ae9401f4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对话框   路径   文件   图片   Qt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 54285文章数
  • 14阅读数
  • 0评论数