当前位置: 首页 > news >正文

【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)

目录

0.简介

1.详细代码及解释

1)原label显示在界面上

2)水平翻转

3)垂直翻转

4)顺时针旋转45度

5)逆时针旋转


0.简介

环境:windows11 + QtCreator

背景:demo,父类为QWidget,界面上有一个label,label中有一个QImage图片,本文主要介绍将QImage图片进行水平翻转、垂直翻转、顺时针旋转和逆时针旋转,详见下文

1.详细代码及解释

1)原label显示在界面上

我的图片只是随便起了个名字【bird.jpg】,事先放在了资源文件中

以下主要代码是在【mainwindows.cpp】类中实现的

    QImage image(":/bird.jpg");QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(image));lb->show();

2)水平翻转

//水平翻转
QImage horFilp(const QImage &image){QImage horFilp = image.mirrored(true,false);return horFilp;
}
    QImage image(":/bird.jpg");QImage horFilpImage = horFilp(image);//调用水平翻转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(horFilpImage));lb->show();

以上代码结构在实际项目中的位置如下图:

3)垂直翻转

//垂直翻转
QImage verFilp(const QImage &image){QImage verFilp = image.mirrored(false, true);return verFilp;
}
    QImage image(":/bird.jpg");QImage verFilpImage = verFilp(image);//调用垂直翻转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(verFilpImage));lb->show();

以上代码结构在实际项目中的位置如下图:

4)顺时针旋转45度

//旋转
QImage rotateImageDegrees(const QImage &image, const int &degrees){QTransform trans;trans.rotate(degrees);QImage rotatedImage = image.transformed(trans, Qt::SmoothTransformation);return rotatedImage;
}
    QImage image(":/bird.jpg");QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(rotatedImage));lb->show();

以上代码结构在实际项目中的位置如下图:

5)逆时针旋转

同顺时针,调用的是同一个函数,只不过在调用的时候,需要将参数设置为负

如顺时针是45,逆时针则为-45

QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转
QImage rotatedImage = rotateImageDegrees(image, -45);//逆时针旋转

--END--

相关文章:

【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)

目录 0.简介 1.详细代码及解释 1)原label显示在界面上 2)水平翻转 3)垂直翻转 4)顺时针旋转45度 5)逆时针旋转 0.简介 环境:windows11 QtCreator 背景:demo,父类为QWidget&a…...

CSP-J模拟赛day1

yjq的吉祥数 文件读写 输入文件 a v o i d . i n avoid.in avoid.in 输出文件 a v o i d . o u t avoid.out avoid.out 限制 1000ms 512MB 题目描述 众所周知, 这个数字在有些时候不是很吉利,因为它谐音为 “散” 所以yjq认为只要是 的整数次幂的数…...

Docker构建LNMP环境并运行Wordpress平台

1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…...

《峡谷小狐仙-多模态角色扮演游戏助手》复现流程

YongXie66/Honor-of-Kings_RolePlay: The Role Playing Project of Honor-of-Kings Based on LnternLM2。峡谷小狐仙--王者荣耀领域的角色扮演聊天机器人,结合多模态技术将英雄妲己的形象带入大模型中。 (github.com) https://github.com/chg0901/Honor_of_Kings…...

Qt 使用Installer Framework制作安装包

Qt 使用Installer Framework制作安装包 引言一、下载安装 Qt Installer Framework二、简单使用2.1 创建目录结构 (文件夹结构)2.2 制作程序压缩包2.3 制作程序安装包 引言 Qt Installer Framework (安装程序框架)是一个强大的工具集,用于创建自定义的在线和离线安装…...

Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器,它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能: 实时预览:Typora支持实时预览功能&#xff0…...

linux代填密码切换用户

一、背景 linux用户账户密码复杂,在不考虑安全的情况下,想要使用命令自动切换用户 二、操作 通过 expect 工具来实现自动输入密码的效果 yum install expect创建switchRoot.exp文件,内容参考下面的 #!/usr/bin/expect set username root…...

防火墙的经典体系结构及其具体结构

防火墙的经典体系结构及其具体结构 防火墙是保护计算机网络安全的重要设备或软件,主要用于监控和控制进出网络流量,防止未经授权的访问。防火墙的经典体系结构主要包括包过滤防火墙、状态检测防火墙、代理防火墙和下一代防火墙(NGFW&#xf…...

【BUG】已解决:note: This is an issue with the package mentioned above,not pip.

已解决:note: This is an issue with the package mentioned above,not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷…...

【ARM】SMMU系统虚拟化整理

目录 1.MMU的基本介绍 1.1 特点梳理 2.功能 DVM interface PTW interface 2.1 操作流程 2.1.1 StreamID 2.1.2 安全状态: 2.1.3 HUM 2.1.4 可配置的操作特性 Outstanding transactions per TBU QoS 仲裁 2.2 Cache结构 2.2.1 Micro TLB 2.2.2 Macro…...

PYQT按键长按机制

长按按键不松开也会触发 keyReleaseEvent 事件,是由于操作系统的键盘事件处理机制。大多数操作系统在检测到键盘按键被长按时,会重复生成按键按下 (keyPressEvent) 和按键释放 (keyReleaseEvent) 事件。这种行为通常被称为“键盘自动重复”。 通过检测 …...

SAPUI5基础知识15 - 理解控件的本质

1. 背景 经过一系列的练习,通过不同的SAPUI5控件,我们完成了对应用程序界面的初步设计,在本篇博客中,让我们一起总结下SAPUI5控件的相关知识点,更深入地理解SAPUI5控件的本质。 通常而言,一个典型UI5应用…...

十七、【机器学习】【非监督学习】- K-均值 (K-Means)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

算法力扣刷题记录 五十六【501.二叉搜索树中的众数】

前言 二叉搜索树操作,继续。 记录 五十六【501.二叉搜索树中的众数】 一、题目阅读 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)…...

分布式搜索引擎ES-Elasticsearch进阶

1.head与postman基于索引的操作 引入概念: 集群健康: green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…...

低代码与传统编程:快速高质量构建系统的比较与方法

在信息技术飞速发展的今天,企业对软件系统的需求不断增加。然而,如何在保证高质量的前提下快速构建系统成为了一个关键问题。本文将深入探讨低代码(Low-Code)开发与传统代码编程的区别,并探讨如何利用这两种方法快速高…...

WebRTC音视频-环境搭建

目录 期望效果 1:虚拟机和系统安装 2:WebRTC客户端环境搭建 2.1:VScode安装 2.2:MobaXterm安装 3:WebRTC服务器环境搭建 3.1:安装openssh服务器 3.2:安装Node.js 3.3:coturn穿透和转发服务器 3.3.1&a…...

Memcached开发(八):使用PHP进行操作

目录 1. 安装与配置 1.1 安装Memcached服务器 1.2 安装PHP的Memcached扩展 2. 基本操作 2.1 连接Memcached服务器 2.2 设置与获取数据 2.3 删除数据 2.4 检查数据是否存在 2.5 添加和替换数据 3. 高级操作 3.1 批量操作 3.2 数据计数器 3.3 CAS(Check …...

[Spring Boot]Protobuf解析MQTT消息体

简述 本文主要针对在MQTT场景下,使用Protobuf协议解析MQTT的消息体 Protobuf下载 官方下载 https://github.com/protocolbuffers/protobuf/releases网盘下载 链接:https://pan.baidu.com/s/1Uz7CZuOSwa8VCDl-6r2xzw?pwdanan 提取码:an…...

什么是Mappers?Mappers的作用是什么?

在软件开发中,“mappers” 通常指的是数据映射器(Data Mappers),它们的主要作用是在应用程序的数据持久化层(通常是数据库或其他持久化存储)与应用程序的业务逻辑之间建立一个映射层。 具体来说&#xff0…...

容器技术从入门到精通:Docker核心概念、Dockerfile与生产实践全解析

1. 项目概述:从零到一构建容器化认知体系最近在技术社区里,经常看到有朋友在讨论stephrobert/containers-training这个仓库。乍一看,这像是一个个人或团队维护的关于容器技术的培训材料。对于刚接触 Docker 和容器生态的开发者、运维工程师&a…...

C++ 入门核心语法|从 Hello World 到基础特性一次性吃透

文章目录前言一、C 第一个程序:Hello World二、命名空间 namespace1. 为什么需要命名空间?2. 命名空间定义规则3. 三种使用方式三、C 输入 & 输出1. 核心对象2. 最大优势四、缺省参数(默认参数)1. 定义2. 使用方式3. 声明与定…...

StreamCap:让直播录制变得如此简单的跨平台自动录制工具

StreamCap:让直播录制变得如此简单的跨平台自动录制工具 【免费下载链接】StreamCap Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 基于FFmpeg 支持监控/定时/转码 项目地址: https://gitcode.com/gh_mirrors/st/StreamC…...

Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)

更多请点击: https://intelliparadigm.com 第一章:Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API,而是依托 Gemini 模型对自然语言指…...

【研报 A109】2026年脑机接口产业化专题报告:首个侵入式产品获批,医保完成赋码

摘要:脑机接口行业正迎来产业化应用的关键元年,2026年行业正式从实验室研究走向规模化商业化落地,当前行业处于导入期尾端、爆发前夜,非侵入式与半侵入式路径已率先打通商业化通道,侵入式则处于临床验证阶段。政策端&a…...

构建现代化图片编辑器的Vue与Fabric.js实践指南

构建现代化图片编辑器的Vue与Fabric.js实践指南 【免费下载链接】vue-fabric-editor 快图设计-基于fabric.js和Vue的开源图片编辑器,可自定义字体、素材、设计模板。fabric.js and Vue based image editor, can customize fonts, materials, design templates. 项…...

技术决策的后悔药:选型错误后的补救策略

在软件测试的全生命周期中,技术选型是影响测试效率、质量与项目成败的关键环节。小到一款测试工具的挑选,大到整个测试框架的搭建,每一次决策都如同在迷雾中航行,稍有不慎便可能驶入“选型错误”的漩涡。当测试环境兼容性问题频发…...

别再只调pool_size了!MaxPool2D的strides和padding参数实战避坑指南(附TensorFlow/Keras代码)

MaxPool2D参数深度解析:如何用strides和padding精准控制特征图尺寸 在构建卷积神经网络时,池化层的参数设置往往被当作"调参黑箱"一带而过。许多开发者习惯性地只调整pool_size,却对strides和padding参数的微妙影响缺乏足够重视。这…...

从SMP到NUMA:聊聊多核CPU时代Linux内存管理是怎么‘进化’的

从SMP到NUMA:多核CPU时代的内存管理演进之路 2000年代初,当单核CPU的主频竞赛逐渐触及物理极限时,计算机架构师们面临一个关键抉择:如何在芯片上堆叠更多晶体管?答案最终指向了多核设计。但随之而来的内存访问瓶颈&…...

Midjourney蓝莓印相技术白皮书(2024V2.3权威修订版):基于1726张A/B测试图谱验证的色阶偏移阈值与CMYK映射规则

更多请点击: https://intelliparadigm.com 第一章:Midjourney Blueberry印相技术的演进脉络与核心定义 Midjourney Blueberry印相技术并非官方术语,而是社区对Midjourney V6中基于蓝光敏感通道(Blue Channel Emulation&#xff0…...