Qt 图片显示 动态选择图片显示

在 Qt 中,显示图片通常使用 QLabel 和 QPixmap 进行图像的加载和显示。QPixmap 是专门用于显示图像的类,而 QLabel 则是一个可以容纳图片的小部件。

1、使用 QLabel 和 QPixmap 来显示图片:

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QVBoxLayout>
#include <QWidget>class ImageWindow : public QWidget {
public:ImageWindow() {QLabel *imageLabel = new QLabel(this); // 创建 QLabel 用于显示图片// 加载图片QPixmap pixmap(":/images/sample.png"); // 图片路径,可以是绝对路径或资源文件路径// 设置 QLabel 的内容为 QPixmapimageLabel->setPixmap(pixmap);// 自动适应 QLabel 的大小imageLabel->setScaledContents(true);// 设置窗口布局QVBoxLayout *layout = new QVBoxLayout(this);layout->addWidget(imageLabel);setLayout(layout);setWindowTitle("图片显示示例");resize(400, 400); // 设置窗口大小}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);ImageWindow window;window.show();return app.exec();
}
  • 说明:
QPixmap:QPixmap 是用来加载和显示图像的类,支持多种图片格式,包括 PNG、JPG、BMP 等。
QPixmap pixmap("path") 加载图片,路径可以是本地文件路径,也可以是 Qt 资源文件系统中的路径(以 :/ 开头)。
QLabel:QLabel 可以显示文本或图像,通过 setPixmap() 函数可以将 QPixmap 设置为图片内容。
setScaledContents(true) 会让图片根据 QLabel 大小自动缩放。

2、资源文件中的图片加载:

在 Qt 项目中,如果图片是作为资源文件包含进来的(通过 .qrc 文件),可以通过 😕 资源路径来访问。例如:

QPixmap pixmap(":/images/sample.png");
例子中的关键部分:
QPixmap:用于加载图片文件。
QLabel:用于显示图片。
setScaledContents(true):图片会根据 QLabel 的大小自动缩放,以适应窗口变化。

3、动态选择图片显示

如果想要让用户选择图片并显示在窗口中,可以结合 QFileDialog 实现。

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <QVBoxLayout>
#include <QFileDialog>
#include <QPushButton>
#include <QWidget>class ImageWindow : public QWidget {QLabel *imageLabel;public:ImageWindow() {imageLabel = new QLabel(this);imageLabel->setScaledContents(true);QPushButton *button = new QPushButton("选择图片", this);QVBoxLayout *layout = new QVBoxLayout(this);layout->addWidget(imageLabel);layout->addWidget(button);connect(button, &QPushButton::clicked, this, &ImageWindow::selectImage);setWindowTitle("动态图片显示");resize(400, 400);}private slots:void selectImage() {QString fileName = QFileDialog::getOpenFileName(this, tr("选择图片"), "", tr("图片文件 (*.png *.jpg *.bmp)"));if (!fileName.isEmpty()) {QPixmap pixmap(fileName);imageLabel->setPixmap(pixmap);imageLabel->adjustSize();  // 调整 QLabel 大小适应图片}}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);ImageWindow window;window.show();return app.exec();
}
  • 动态选择图片并显示的案例说明:
    用户点击按钮时,打开文件选择对话框,让用户选择图片文件。
    使用 QFileDialog::getOpenFileName() 来选择图片文件,选择的文件路径作为 QPixmap 的输入,显示在 QLabel 中。

总结:

QPixmap 和 QLabel 是 Qt 中显示图片的常用组合。
可以通过 setPixmap() 设置图片,通过 setScaledContents() 让图片自适应窗口。
结合 QFileDialog 可以让用户动态选择图片并显示。

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

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

相关文章

windows配置java环境变量

windows如何配置java环境变量&#xff08;java环境变量配置教程&#xff09;_windowsjava环境变量配置-CSDN博客

Redis接口访问优化

说明&#xff1a;之前写过一篇使用Redis接口访问的博客&#xff0c;如下。最近有相关需求&#xff0c;把代码拿出来后&#xff0c;做了一些优化&#xff0c;挺有意思的&#xff0c;本文介绍在原基础上 使用Redis实现接口防抖 优化 总的来说&#xff0c;这次使用Redis实现接口…

【尚硅谷】RocketMQ 消息队列学习笔记

RocketMQ 和 Kafka 消息队列概念比较&#xff1f; 好的&#xff01;RocketMQ 和 Kafka 都是分布式消息队列系统&#xff0c;它们的核心概念有很多相似之处&#xff0c;但在具体实现和命名上有所不同。下面我通过一个表格来对比 RocketMQ 和 Kafka 中的五个概念&#xff1a;消息…

操作系统 | 学习笔记 | 王道 | 4.1 文件系统基础

4.文件管理 4.1 文件系统基础 4.1.1 文件的基本概念 定义 文件是以计算机硬盘为载体的存储在计算机上的信息集合&#xff0c;在用户进行的输入、输出中&#xff0c;以文件位基本单位。 文件管理系统是实现的文件的访问、修改和保存&#xff0c;对文件维护管理的系统。 文件的…

2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP&#xff1b;H3C-SE;CCIP——…

APP自动化搭建与应用

APP自动化环境搭建 用于做APP端UI自动化&#xff0c;adb连接手机设备。 需要的工具java编辑器&#xff1a;jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer 第一步&#xff1a;安装sdk&#xff0c;里面包含建立工具bu…

一、机器学习算法与实践_06迭代法和KMeans、线性回归、逻辑回归算法笔记

0 迭代法 迭代法不仅是机器学习、深度学习的核心&#xff0c;也是整个人工智能领域的重要概念&#xff0c;其对于算法的设计和实现至关重要 0.1 适合场景 对于不能一次搞定的问题&#xff0c;将其分成多步来解决&#xff0c;逐步逼近解决方案 0.2 典型应用 KMeans 聚类算法…

9-贪心算法

PDF文档下载&#xff1a;LeetCode-贪心算法-java 参考&#xff1a;代码随想录 题目分类大纲如下&#xff1a; 贪心算法理论基础 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff…

【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)

第三部分&#xff1a;高级主题 第十章 高级函数与范式 在现代 JavaScript 开发中&#xff0c;高级函数与函数式编程范式正在逐渐成为开发者追求的目标。这种范式关注于函数的使用&#xff0c;消除副作用&#xff0c;提高代码的可读性和可维护性。 10.1. 高阶函数 高阶函数是…

【Python】文件及目录

文章目录 概要一、文件对象的函数1.1 open()函数1.2 文件对象的函数1.3 with语句 二、基于os和os.path模块的目录操作三、基于Pandas的文件处理3.1 Pandas读写各种类型文件 其他章节的内容 概要 本文主要将了打开文件的函数open()的参数&#xff0c;以及文件对象的函数&#x…

Vue2 + ElementUI + axios + VueRouter入门

之前没有pc端开发基础&#xff0c;工作需要使用若依框架进行了一年的前端开发.最近看到一个视频框架一步步集成&#xff0c;感觉颇受启发&#xff0c;在此记录一下学习心得。视频链接:vue2element ui 快速入门 环境搭建和依赖安装 安装nodejs安装Vue Cli使用vue create proje…

C/C++简单编译原理

我们写的头文件和.cpp文件究竟是如何在电脑中运行的&#xff1f; 先明确几个文件类型&#xff1a; 1、头文件&#xff08;.h .hpp&#xff09; 第三方头文件、系统头文件、自编头文件…… 2、编译单位&#xff08;.cpp .c cu&#xff09; 自己写的脚本文件 3、目标文件&…

JVM 系列知识体系全面回顾

经过几个月的努力&#xff0c;JVM 知识体系终于梳理完成了。 很早之前也和小伙伴们分享过 JVM 相关的技术知识&#xff0c;再次感谢大家支持和反馈。 最后再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以点击查看。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的…

ICPC-day2(圆方树)

圆方树 - OI Wiki (oi-wiki.org) F-Fief_"蔚来杯"2022牛客暑期多校训练营3&#xff08;重现赛&#xff09;山川四月 (nowcoder.com) 题目大意:给定一个无向图&#xff0c;每次询问两点x, y&#xff0c;求是否存在一个n的排列&#xff0c;使得第一个元素为x&#xf…

代码随想录 103. 水流问题

103. 水流问题 #include<bits/stdc.h> using namespace std;void dfs(vector<vector<int>>& mp, vector<vector<int>>& visit, int y, int x){if (visit[y][x] 1) return;visit[y][x] 1;if (y > 0){if (mp[y][x] < mp[y - 1][x…

计算机网络——http和web

无状态服务器——不维护客户端 怎么变成有状态连接 所以此时本地建立代理—— 若本地缓存了——但是服务器变了——怎么办&#xff1f;

vue 不是spa 单页面应用吗? 配置路由工作模式为history 后 ,为什么配置Nginx的 try_files 可以根据url 找到对应的文件?

免责申明 记录用&#xff0c;本人主要是后端,可能理解有误 Vue.js 是一个前端框架&#xff0c;主要用于构建单页面应用程序&#xff08;SPA&#xff09;。然而&#xff0c;Nginx 是一个服务器端的应用程序&#xff0c;负责处理 HTTP 请求并返回相应的资源。 当在 Vue.js 应用…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的&#xff0c;因此漏洞一旦存在&#xff0c;危害性会很大。但远程文件包含漏洞的利用条件较为苛刻&#xff1b;因此&#xff0c;在web应用系统的功能设计上尽量不要让前端用户直接传变…

用java编写飞机大战

游戏界面使用JFrame和JPanel构建。背景图通过BG类绘制。英雄机和敌机在界面上显示并移动。子弹从英雄机发射并在屏幕上移动。游戏有四种状态&#xff1a;READY、RUNNING、PAUSE、GAMEOVER。状态通过鼠标点击进行切换&#xff1a;点击开始游戏&#xff08;从READY变为RUNNING&am…

深入理解C语言中的内存分配函数:malloc、calloc、realloc

目录&#xff1a; 前言1. malloc&#xff1a;分配内存块2. calloc&#xff1a;分配并初始化内存块3. realloc&#xff1a;重新分配内存块总结 前言 在C语言编程中&#xff0c;动态内存分配是一个非常重要的概念。它允许我们在程序运行时根据需要分配和释放内存&#xff0c;从而…