【QT入门】实现一个简单的图片查看软件

news2024/11/10 7:11:27

声明:该专栏为本人学习Qt知识点时候的笔记汇总,希望能给初学的朋友们一点帮助(加油!)


往期回顾:

【QT入门】qmake和cmake的简单区别-CSDN博客

【QT入门】VS qt和QtCreator项目的相互转换-CSDN博客

【QT入门】Qt架构与三个窗口的区别-CSDN博客

 【QT入门】实现一个简单的图片查看软件

一、最终实现效果

点击打开按钮,弹出文件窗口,可以自行选择图片,确定选举后图片将展示在下面的LineEdit控件里,图片路径也将显示出来

二、需要用到的控件

1.1QLabel控件

设置图片用到了QPixmap,这个类的构造方法有一个就是直接给图片路径就可以 

1.2QLineEdit控件 

 1.3QPushButton控件

 几个类设置文本和获取文本所用的方法是一样的。

三、需要实现的功能

2.1打开目录选择图片并获取图片路径

这里用到了QFileDialog类和其方法getOpenFileName

QFileDialog::getOpenFileName()

static QString getOpenFileName(QWidget *parent = nullptr,
                                   const QString &caption = QString(),
                                   const QString &dir = QString(),
                                   const QString &filter = QString(),
                                   QString *selectedFilter = nullptr,
                                   Options options = Options()); 

我们看一下他的几个参数:

QWidget *parent = nullptr:指定文件对话框的父窗口,即文件对话框将显示在哪个窗口上。默认值为nullptr,表示没有父窗口。
const QString &caption = QString():指定文件对话框的标题,即对话框的显示名称。默认值为空字符串QString()。
const QString &dir = QString():指定文件对话框打开时显示的初始目录。默认值为空字符串QString()。
const QString &filter = QString():指定文件过滤器,用于限制用户选择的文件类型。默认值为空字符串QString(),表示不设置任何过滤器。
QString *selectedFilter = nullptr:用于存储用户选择的过滤器的指针。如果用户选择了过滤器,则该参数将指向用户选择的过滤器。默认值为nullptr,表示不存储选择的过滤器。
Options options = Options():用于指定文件对话框的选项,例如显示隐藏文件、只显示目录等。默认值为Options(),表示使用默认选项。

我们写入的参数如下:

getOpenFileName(this,"请选择图片","C:/","图片(*.png *.jpg);;"); 

this表示父窗口为当前窗口

"图片(*.png *.jpg);;" 是用来过滤文件类型的参数。这里的*.png表示只显示具有.png扩展名的文件,而*.jpg表示只显示具有.jpg扩展名的文件。"图片(*.png *.jpg);;"中的分号用于分隔不同类型的文件过滤器。

如果要允许用户选择任何类型的文件,可以将过滤器设置为"All Files (*)"

2.2显示图片的名字 

获取到文件路径以后,直接放进去展示就可以了,很简单的,不过放进去之前可以先进行一个简单的非空判断

if(filename.isEmpty())
   {
       return;
   } 
ui->lineEdit_image->setText(filename);

2.3显示图片 

最后就是用一个QPixmap展示图片,调用的同时初始化了函数

ui->label_photo->setPixmap(QPixmap(filename));

四 、最终实现代码

void Widget::on_btn_open_clicked()
{
   QString filename = QFileDialog::getOpenFileName(this,"请选择图片","C:/","图片(*.png *.jpg);;");

   if(filename.isEmpty())
   {
       return;
   }

   ui->lineEdit_image->setText(filename);
   ui->label_photo->setPixmap(QPixmap(filename));
}

 没有写注释,大家有不太明白可以再查查资料,会理解的更好。

都看到这里了,点个赞再走呗朋友~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1532917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

航顺车规级SoC全新亮相,助推汽车智能化发展

受益于汽车电动化、智能化和网联化的推进,汽车车身域和座舱域MCU市场规模持续扩大。据统计,2021年中国车载芯片MCU市场规模达30.01亿美元,同比增长13.59%,预计2025年市场规模将达42.74亿美元。 在技术要求方面,对…

Docker如何端口映射?

Docker是一种流行的开源容器化平台,它允许开发者将应用程序和其依赖资源打包到一个称为容器的可移植单元中。Docker提供了强大的管理和部署工具,使得应用程序可以在不同的环境中运行,无需担心环境配置的问题。在使用Docker部署应用程序时&…

Websocket + Vue使用

这里有一篇文档可以参考一下> 闪现 POM文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.7.0</version> </dependency> WebSocketConf…

模型部署 - onnx的导出和分析 - onnx 的架构和 onnx helper 的使用 - 学习记录

onnx 的架构和 onnx helper 的使用 简介一、onnx 的架构二、onnx 实践2.1、 create - linear.onnx2.1.1、要点一&#xff1a;创建节点2.1.2、要点二&#xff1a;创建张量2.1.3、要点三&#xff1a;创建图 2.2、 create - onnx.convnet2.3、使用 onnx helper 导出的基本流程总结…

Web框架开发-Django模型层(数据库操作)

一、ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动ORM是“对象-关系-映…

g++在windows下使用C++进程库无法传入参数<求助>

如题&#xff1a; windows11使用g的时候&#xff0c;想使用下线程库。但是就发现了如题的问题。在使用时&#xff0c;不传入参数时不会报错的&#xff0c;但是传入参数之后就产生了报错。 点击进入定义发现头文件定义明明是正确的。 具体报错如下图。

流畅的 Python 第二版(GPT 重译)(二)

第三章&#xff1a;字典和集合 Python 基本上是用大量语法糖包装的字典。 Lalo Martins&#xff0c;早期数字游牧民和 Pythonista 我们在所有的 Python 程序中都使用字典。即使不是直接在我们的代码中&#xff0c;也是间接的&#xff0c;因为dict类型是 Python 实现的基本部分。…

绝地求生:PUBG延长GPU崩溃时间新方法

相信大家都在被GPU游戏崩溃苦恼已久&#xff0c;PUBG这个游戏崩溃&#xff0c;跟超频是没有多大关系的&#xff0c;只要超频TM5过测&#xff0c;YC过测&#xff0c;或者双烤过测&#xff0c;就没问题。主要是这个游戏的优化不行&#xff0c;特别40系显卡&#xff0c;对内存条也…

申请双软认证需要哪些材料?软件功能测试报告怎么获取?

“双软认证”是指软件产品评估和软件企业评估&#xff0c;其中需要软件测试报告。 企业申请双软认证除了获得软件企业和软件产品的认证资质&#xff0c;同时也是对企业知识产权的一种保护方式&#xff0c;更可以让企业享受国家提供给软件行业的税收优惠政策。 那么&#xff0c;…

PyTorch 深度学习(GPT 重译)(二)

四、使用张量表示真实世界数据 本章内容包括 将现实世界的数据表示为 PyTorch 张量 处理各种数据类型 从文件加载数据 将数据转换为张量 塑造张量&#xff0c;使其可以作为神经网络模型的输入 在上一章中&#xff0c;我们了解到张量是 PyTorch 中数据的构建块。神经网络…

SQLiteC/C++接口详细介绍sqlite3_stmt类(二)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类简介 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;三&#xff09; sqlite3_reset() 功能&#xff1a;重置一个准备好执行的SQL语…

机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

【LeetCode: 224. 基本计算器 + 模拟 + 栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【原创】三十分钟实时数据可视化网站前后端教程 Scrapy + Django + React 保姆级教程向

这个本来是想做视频的&#xff0c;所以是以讲稿的形式写的。最后没做视频&#xff0c;但是觉得这篇文还是值得记录一下。真的要多记录&#xff0c;不然一些不常用的东西即使做过几个月又有点陌生了。 文章目录 爬虫 SCRAPYxpath 后端 DJANGO前端 REACT Hello大家好这里是小鱼&a…

sheng的学习笔记-AI-Inception network

目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 构建卷积层时&#xff0c;你要决定过滤器的大小究竟是11&#xff08;原来是13&#xff0c;猜测为口误&#xff09;&#xff0c;33还是55&#xff0c;或者要不要添加池化层。而Inception网络的作用就是代替你来决定&…

kubesphere all in one部署Jenkins提示1 Insufficient cpu

原因 devops 至少一个cpu&#xff08;1000m&#xff09;&#xff0c;但是其他资源已经占用了很多cpu CPU 资源以 CPU 单位度量。Kubernetes 中的一个 CPU 等同于&#xff1a; 1 个 AWS vCPU 1 个 GCP核心 1 个 Azure vCore 裸机上具有超线程能力的英特尔处理器上的 1 个超线程…

编译libcurl with openssl + zlib (gzip)

libcurl 编译说明 libcurl 正常不依赖第三方库也可以进行编译使用&#xff0c;但是只能访问不带ssl通道的http,不能访问https&#xff0c;而且不支持gzip 一般现在常用的https中的ssl是使用openssl、gzip使用zlib 下面是如何编译libcurl&#xff0c;我们在项目中使用的是第二种…

ubuntu部署wireguard服务端,ubuntu部署wireguard客户端

docker部署方式 docker run -d \--namewg-easy \-e WG_HOST6.6.6.6服务端IP \-e PASSWORD123abc登陆管理密码 \-e WG_DEFAULT_ADDRESS10.0.8.x客户端 IP 地址范围 \-e WG_DEFAULT_DNS1.1.1.1配置dns \-e WG_ALLOWED_IPS10.0.8.0/24 \-e WG_PERSISTENT_KEEPALIVE25 \-v ~/.wg-e…

CAPL如何实现TCP Packet的option字段

在TCP协议中,主机可以根据自身的需要决定TCP通信时是否携带option字段,来扩展TCP功能。option字段属于TCP首部的扩展部分,且是可选项,TCP根据首部中的offset字段值确定TCP报文是否携带option字段。 TCP首部固定的部分有20个字节,如果没有扩展部分(option字段),20个字节…

【Qt】使用Qt实现Web服务器(四):传递参数、表单提交和获取请求参数

1、示例 1)演示 2)提交 3)显示 2、源码 1)示例源码Demo1->FormController void FormController::service(HttpRequest& request, HttpResponse& response) {