使用Qt开发一个简易图片查看器的完整指南

 更新时间:2026年05月18日 08:31:49   作者:软件科学-郝学胜  
本文介绍了使用Qt开发一个简易图片查看器的完整过程,项目通过3个核心控件(QLabel、QLineEdit、QPushButton)实现图片选择、路径显示和图片预览功能,感兴趣的小伙伴可以了解下

当你踏入 Qt 开发的大门,第一个上手的小项目往往能帮你快速吃透控件、布局、信号槽、文件对话框这些核心知识点。今天就用最直白的步骤,带你从零实现一个图片查看软件—— 支持选择图片、显示路径、预览图片,新手也能跟着敲完直接运行!

一、先明确:我们要做什么?

本次实现的图片查看器,核心功能非常清晰:

  • 点击按钮弹出文件选择框,筛选图片格式(PNG/JPG)
  • 在输入框中显示选中图片的完整路径
  • 在界面中加载并显示所选图片
  • 界面整洁、布局合理,比例可控

整个项目用到的 Qt 基础控件只有 3 种,逻辑简单、扩展性强,非常适合 Qt 入门练手。

二、核心控件速览:3 个控件搞定全部界面

Qt 提供了丰富的 UI 控件,本项目只需要最常用的三种,就能完成全部交互:

1. QLabel —— 文本 & 图片 “双料显示”

QLabel 是 Qt 里最灵活的显示控件,本次承担两个角色:

  • 显示 “图片路径” 静态文本
  • 承载并渲染选中的图片

高频方法速记:

// 设置文本
ui->label->setText("图片路径");
// 获取文本
QString text = ui->label->text();
// 设置图片(核心!)
ui->label->setPixmap(QPixmap(filePath));
// 清空内容
ui->label->clear();
// 设置样式表
ui->label->setStyleSheet("font-size:14px; color:#333;");

2. QLineEdit —— 图片路径展示框

专门用来显示图片的完整路径,支持只读展示,禁止用户手动编辑。

// 设置路径文本
ui->lineEdit->setText(fileName);
// 获取路径文本
QString path = ui->lineEdit->text();

3. QPushButton —— 触发文件选择

按钮负责响应用户点击,弹出文件选择对话框,是整个程序的交互入口

按钮的点击行为必须通过 Qt 信号槽 绑定,这是 Qt 事件处理的核心机制。

三、界面搭建:布局才是界面的灵魂

界面丑不丑,全看布局怎么搞!本次采用 水平布局 + 垂直布局 嵌套,步骤超简单:

1. 拖入控件

顶部:QLabel(提示文字)+ QLineEdit(路径)+ QPushButton(浏览)

底部:QLabel(大图展示区域,命名为 image)

2. 布局设置

  1. 选中顶部 3 个控件 → 水平布局
  2. 点击空白处 → 选中整个界面 → 垂直布局
  3. 调整布局比例:设置上下比例为 1:10,让图片展示区占满大部分界面
  4. 微调 margin 边距,让界面更紧凑美观

这样无论窗口怎么拉伸,布局比例都不会乱,体验直接拉满!

3. 控件重命名(规范很重要)

  1. 按钮:btnOpen(显示文字:浏览)
  2. 图片展示标签:image
  3. 路径输入框:lineEdit_Path

规范命名能让后期代码维护更轻松,避免一堆默认名乱成一锅粥。

四、功能实现:从点击按钮到显示图片

1. 绑定按钮点击信号槽

按钮点击信号 clicked() 需要绑定自定义槽函数,格式遵循 Qt 规范:

// 头文件中声明槽函数
private slots:
    void on_btnOpen_clicked();

2. 弹出文件选择对话框

使用 QFileDialog::getOpenFileName() 静态方法,快速打开系统文件选择框,支持文件过滤

void on_btnOpen_clicked()
{
    // 弹出文件对话框,只显示 PNG/JPG 图片
    QString fileName = QFileDialog::getOpenFileName(
        this,                // 父窗口
        "请选择图片",        // 对话框标题
        "D:",              // 默认打开路径
        "图片 (*.png *.jpg)" // 文件过滤器
    );

    // 如果未选择文件,直接返回
    if (fileName.isEmpty()) {
        return;
    }

    // 1. 显示图片路径到输入框
    ui->lineEdit_Path->setText(fileName);
}

3. 加载并显示图片

路径获取成功后,用 QPixmap 加载图片,再交给 QLabel 显示:

// 继续上面的代码
// 2. 加载图片并显示
QPixmap pixmap(fileName);
// 将图片设置到 label 中
ui->image->setPixmap(pixmap);

到这里,基础功能已经全部实现!运行程序,点击浏览,选择图片,就能看到路径和图片同步显示啦

五、当前版本小问题(可优化方向)

虽然功能跑通了,但还有两个细节可以优化:

  1. 图片尺寸太小:默认按原图大小显示,不会自适应 Label 区域
  2. 路径未记忆:每次打开都从默认路径开始,没有记录上次选择目录
  3. 图片拉伸变形:未做等比例缩放,大图会被裁剪

这些问题我们会在下一节完整优化,让图片查看器更专业、更好用!

六、总结

这个小项目虽然简单,却覆盖了 Qt 入门最核心的知识点:

  • 三大基础控件(QLabel / QLineEdit / QPushButton)
  • 信号槽绑定(点击事件触发)
  • 布局管理(水平 + 垂直嵌套)
  • 文件对话框(QFileDialog)
  • 图片加载与显示(QPixmap)

只要跟着步骤敲完代码,你就已经跨过了 Qt 入门的第一道门槛,后续再做复杂工具、客户端软件,思路都是相通的!

到此这篇关于使用Qt开发一个简易图片查看器的完整指南的文章就介绍到这了,更多相关Qt图片查看器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于C语言实现高级通讯录的示例代码

    基于C语言实现高级通讯录的示例代码

    这篇文章主要为大家详细介绍了如何利用C语言实现一个高级通讯录的功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2023-01-01
  • C标准库<assert.h>的实现详解

    C标准库<assert.h>的实现详解

    这篇文章主要介绍了C标准库<assert.h>的实现,主要包括了<assert.h>的基本概念、实现及用法等,需要的朋友可以参考下
    2014-09-09
  • C/C++实现获取完整路径下的文件名及后缀

    C/C++实现获取完整路径下的文件名及后缀

    这篇文章主要为大家详细介绍了C/C++实现获取完整路径下的文件名及后缀的完整方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-11-11
  • C++中stringstream的用法和实例

    C++中stringstream的用法和实例

    下面小编就为大家带来一篇C++中stringstream的用法和实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C++前置声明的方式与说明介绍

    C++前置声明的方式与说明介绍

    本文给大家介绍c++前置声明的方式与说明,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-03-03
  • 利用Matlab复刻扫雷小游戏

    利用Matlab复刻扫雷小游戏

    windows自带的游戏《扫雷》是陪伴了无数人的经典游戏,本程序参考《扫雷》的规则进行了简化,用Matlab实现,感兴趣的小伙伴可以学习一下
    2022-03-03
  • Linux下如何使用C++获取硬件信息

    Linux下如何使用C++获取硬件信息

    这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-04-04
  • Cocos2d-x UI开发之CCControlColourPicker控件类使用实例

    Cocos2d-x UI开发之CCControlColourPicker控件类使用实例

    这篇文章主要介绍了Cocos2d-x UI开发之CCControlColourPicker控件类使用实例,本文代码中包含大量注释来讲解CCControlColourPicker控件类的使用,需要的朋友可以参考下
    2014-09-09
  • 解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)

    解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)

    这篇文章主要介绍了解析VScode在Windows环境下c_cpp_properties.json文件配置问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • C语言开发实现井字棋及电脑落子优化示例详解

    C语言开发实现井字棋及电脑落子优化示例详解

    以前上课经常和同桌玩起井字棋,那么我们就当我们回忆童年,现在也用C语言来实现井字棋,本次代码相对于初阶的井字棋,在电脑下棋代码部分做了优化,使得电脑更加具有威胁
    2021-11-11

最新评论