一、优化图片查看软件



00:00



1. 存在的问题



00:16



  • 路径记忆问题:无法记住上次打开的路径,每次都是同一个路径

  • 默认路径设置:需要将默认路径设为文档/图片

  • 图片自适应显示:需要实现图片自适应显示功能

2. 记住上次打开的路径



01:45



1)配置文件保存路径



02:11



  • 配置方案:使用配置文件保存上次打开的路径

  • 实现方法:

    • 在程序编译后的debug目录下创建config目录

    • 使用Setting.ini文件保存路径信息

    • 通过QSettings类读写配置文件

2)QSettings类使用



02:32



  • 头文件:需要包含<QSettings>头文件

  • 构造方法:

  • 读写操作:

    • 读取值:pIniSet->value("/LastPath/path").toString()

    • 写入值:pIniSet->setValue("/LastPath/path", path)

3)路径处理技巧
  • 获取路径:使用qApp->applicationDirPath()获取程序所在目录

  • 路径截取:使用fileName.lastIndexOf("/")找到最后一个斜杠位置

  • 路径保存:只保存目录路径,不包含文件名

3. 默认路径设置
1)QStandardPaths类



08:49



  • 功能:获取系统标准路径

  • 常用枚举值:

    • PicturesLocation:图片目录

    • DocumentsLocation:文档目录

    • DesktopLocation:桌面目录

  • 使用方法:

2)默认路径实现
  • 实现逻辑:

    • 首先尝试从配置文件中读取上次路径

    • 如果为空,则使用系统图片目录作为默认路径

    • 将选择的文件路径处理后保存到配置文件

4. 图片自适应显示
  • 实现思路:通过QPixmap类加载图片并自适应显示

  • 关键代码:

5. 代码优化建议



16:26



  • 智能指针:建议使用智能指针管理QSettings对象

  • 错误处理:添加配置文件读写错误处理

  • 路径验证:检查路径是否存在再尝试打开

  • 内存管理:及时释放不再需要的资源

二、图片查看器代码优化



18:52



1. Qt Creator优化图片查看
  • 路径记忆功能:使用QSettings类存储上次打开的图片路径,通过配置文件实现路径记忆

  • 默认路径设置:当首次打开时,默认路径设为系统图片目录,使用QStandardPaths::PicturesLocation获取

  • 图片自适应显示:通过setScaledContents(true)实现图片自适应QLabel大小显示

三、优化图片查看软件存在的问题



20:02



  • 路径记忆问题:

    • 解决方案:使用QSettings将路径写入INI配置文件

    • 实现细节:在关闭时保存当前路径,下次打开时读取

  • 默认路径问题:

    • 解决方案:通过QStandardPaths指定系统标准图片目录

    • 替代方案:后续可使用Windows注册表存储路径

  • 图片显示问题:

    • 自适应显示:使用QPixmap的scaled()配合setScaledContents(true)

    • 内存管理:new创建的QPixmap对象需要手动delete,避免内存泄漏

    • 显示效果:设置Qt::KeepAspectRatio保持图片比例,防止失真

  • 代码优化要点:

    • 使用unique_ptr智能指针管理QSettings对象,避免内存泄漏

    • 添加路径为空判断,确保默认路径设置

    • 图片加载后立即释放QPixmap资源

    • 通过qDebug()输出调试信息,方便问题排查

四、知识小结

知识点

核心内容

技术实现

难度系数

路径记忆功能

通过配置文件保存上次打开的路径,使用QSettings类读写INI文件

QSettings配置读写、路径截取处理

⭐⭐

默认路径设置

将默认路径设为系统图片目录,使用QStandardPaths获取系统标准路径

QStandardPaths::PicturesLocation枚举值应用

图片自适应显示

实现图片缩放适应控件大小,保持比例同时填充显示区域

QPixmap::scaled()方法配合Qt::KeepAspectRatio参数

⭐⭐

智能指针应用

使用unique_ptr管理QSettings对象生命周期,避免内存泄漏

C++11智能指针与Qt对象结合使用

⭐⭐⭐

配置文件管理

在可执行文件同级目录创建config文件夹存储配置

相对路径处理、运行时目录获取

⭐⭐

注册表存储方案

后续计划改用Windows注册表替代INI文件存储配置

注册表API与Qt集成方案

⭐⭐⭐