QT:实现图片选择器

一、效果图

二、用到的类

qApp :可以快速获取到项目目录位置。
QSettings :编写config文件,记录上次打开图片的位置,下次打开图片会从上次的位置查找图片。
QPixmap:用于图片的缩放,防止图片过小,显示区域不能完全覆盖。

三、代码

cpp 复制代码
void Widget::on_btnOpen_clicked()
{
    //找到配置文件路径
    QString config_path = qApp->applicationDirPath() + "/config/setting.ini";
    QSettings *pIniset = new QSettings(config_path,QSettings::IniFormat);

    //设置上次路径(没有就默认)
    QString last_path = pIniset->value("/LastPath/path").toString();
    if(last_path.isEmpty())
    {
        //图片标准路径
        last_path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
    }

    QString fileName = QFileDialog::getOpenFileName(this,"打开图片",last_path,"图片(*.jpg *png)");
    if(fileName.isEmpty())
   {
       return;
   }

   //记录图片目录位置
   int end = fileName.lastIndexOf("/");
   QString _path = fileName.left(end);
   pIniset->setValue("/LastPath/path",_path);

   //改变图片大小格式
   ui->line_filepath->setText(fileName);
   QPixmap *pix = new QPixmap(fileName);
   pix->scaled(ui->lable_showpic->size(),Qt::KeepAspectRatio);
   ui->lable_showpic->setScaledContents(true);
   ui->lable_showpic->setPixmap(*pix);
   
   //释放资源
   delete pIniset;
   pIniset = nullptr;
   delete pix;
   pix = nullptr;
}
相关推荐
小羊没烦恼!19 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读20 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车21 小时前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超1 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int1 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项1 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
CoderYanger1 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读1 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie1 天前
Linux进程控制四大核心操作
linux·开发语言