[Qt] 基于 Qt 的文件选择与图片显示功能实现



在这篇博客中,我们将带领 Qt 的初学者一步步实现一个简单的图片选择与显示功能,并逐渐优化代码,从最基础的版本开始,逐步添加更多的功能。本文中使用了 Qt 中多个重要的类和函数,例如 QFileDialogQSettingsQPixmap 等。文章为每个版本的实现进行详细讲解,帮助更好地理解 Qt 的使用。

基础版本:open1()

open1() 是一个最基础的实现,用于选择图片文件并在界面上显示图片。下面是该版本的实现:

void Widget::open1()
{
   
    // 打开文件对话框,供用户选择图片文件
    // getOpenFileName() 函数的四个参数依次是:
    // 1. 父组件,通常传递当前对象 this
    // 2. 对话框标题
    // 3. 初始打开的文件路径(此处是 D 盘根目录)
    // 4. 过滤器,限制显示的文件类型(这里是 PNG 和 JPG 格式的图片)
    QString filename = QFileDialog::getOpenFileName(this, "请选择图片", "D:/", "图片(*.png *.jpg)");

    // 如果用户没有选择任何文件,直接返回
    if(filename.isEmpty())
    {
   
        return;
    }

    // 将选择的文件路径显示在界面上的 QLineEdit 中
    ui->lineEdit_path->setText(filename);

    // 将选择的图片加载成 QPixmap 对象,并显示在 QLabel 中
    ui->label_image->setPixmap(QPixmap(filename));
}

功能解析:

  • QFileDialog::getOpenFileName
    用于显示文件选择对话框,返回所选文件的路径。如果用户取消选择,则返回空字符串。 。它返回用户选择的文件的完整路径。参数包括:
    • this: 父窗口指针。
    • "请选择图片": 对话框的标题。
    • "D:/": 初始路径,这里设置为 D: 盘。
    • "图片(*.png *.jpg)": 过滤器,限制用户只能选择 .png.jpg 格式的图片。
  • QLineEdit::setText()
    这个函数用于在界面上的文本框(这里是 lineEdit_path)中显示选中文件的路径。
  • QLabel::setPixmap()
    用于在标签中显示图片,将 QPixmap 对象加载的图片展示到界面上,QPixmap 对象用于加载图片。通过 setPixmap,我们可以将图片显示在 label_image 组件中。

特点与限制:

这个版本的代码实现了基础的图片选择与显示功能,但有一个明显的缺点:每次打开文件选择对话框时,路径都会重置为 D:/,不能记住上次用户选择的文件夹位置。

增加路径记忆功能:open2()

open2() 中,我们对 open1() 进行了增强,添加了保存和记忆上次打开路径的功能。为此, 通过 QSettings 类保存和读取上次使用的路径。

void Widget::open2()
{
   
    // 获取应用程序的配置文件路径,存放在当前应用的目录下
    QString config_path = qApp->applicationDirPath() + "/config/Setting.ini";
    qDebug() << config_path;  // 输出配置文件路径,便于调试查看

    // 使用 QSettings 读取 ini 文件中的配置信息,文件不存在时会自动创建
    QSettings* pIniSet = new QSettings(config_path, QSettings::IniFormat);

    // 从配置文件中读取上次使用的路径,如果没有记录则返回空字符串
    QString lastPath = pIniSet->value<
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DevKevin

你们的点赞收藏是对我最大的鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值