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

news2024/11/12 23:01:50

目录

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--

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

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

相关文章

盒须图boxplot 展示第6条线

正常情况下,盒须图是有5条线的,但是实际产品场景是需要6条线,看了下echarts官网,没看到可配置的地方,只能自己骚操作了,效果图如下: 重点:用两条x轴,第6条线挂在第二条x…

【flink】之如何快速搭建一个flink项目

1.通过命令快速生成一个flink项目 curl https://flink.apache.org/q/quickstart.sh | bash -s 1.19.1 生成文件目录: 其中pom文件包好我们所需要的基础flink相关依赖 2.测试 public class DataStreamJob {public static void main(String[] args) throws Except…

GitHub 令牌泄漏, Python 核心资源库面临潜在攻击

TheHackerNews网站消息,软件供应链安全公司 JFrog 的网络安全研究人员称,他们发现了一个意外泄露的 GitHub 令牌,可授予 Python 语言 GitHub 存储库、Python 软件包索引(PyPI)和 Python 软件基金会(PSF&…

《昇思25天学习打卡营第25天|onereal》

初学入门/初学教程/08-模型训练.ipynb 模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 构建数据集 首先从数…

国内AI算力芯片厂商群雄逐鹿,创新产品引领边缘计算新风尚

近年来,随着人工智能技术的飞速发展,AI算力芯片作为支撑这一技术的关键基础设施,受到了前所未有的关注。国内厂商纷纷加入竞争,四川万物纵横科技就是其中争流涌进的一员,公司不仅在技术上追求创新,还在市场…

FastAPI 学习之路(五十二)WebSockets(八)接受/发送json格式消息

前面我们发送的大多数都是text类型的消息,对于text消息来说,后端处理出来要麻烦的多,那么我们可以不可以传递json格式的数据,对于前后端来说都比较友好,答案是肯定的,我们需要做下处理。 首先,…

LNMP环境配置问题整理

首先是一键安装直接报错: 换教程:搭建LNMP,步骤最详细,附源码,学不会打我-CSDN博客 mysql安装成功之后: MySQL 启动报错:Job for mysqld.service failed because the control process exited …

Java 在PDF中替换文字(详解)

目录 使用工具 Java在PDF中替换特定文字的所有实例 Java在PDF中替换特定文字的第一个实例 Java在PDF中使用正则表达式替换特定文字 其他替换条件设置 可能出现的问题及解决方案 PDF文档中的信息随时间的推移可能会发生变化,比如产品价格、联系方式等。为了确保…

迭代学习笔记

一、迭代学习定义和分类 1、直观理解 迭代学习一般应用于重复性的场景。比如控制一个单自由度的小车以特定的速度曲线移动到指定位置,整个时间是10s,控制频率是0.01,那么整个控制序列就会有1000个点。这1000个点在10s内依次发出&#xff0c…

网络编程-TCP 协议的三次握手和四次挥手做了什么

TCP 协议概述 1. TCP 协议简介 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP 协议提供可靠的通信服务,通过校验和、序列号、确认应答、重传等机制保证数据传输…

Pytorch学习笔记day4——训练mnist数据集和初步研读

该来的还是来了hhhhhhhhhh,基本上机器学习的初学者都躲不开这个例子。开源,数据质量高,数据尺寸整齐,问题简单,实在太适合初学者食用了。 今天把代码跑通,趁着周末好好的琢磨一下里面的各种细节。 代码实…

C++内存管理(区别C语言)深度对比

欢迎来到我的Blog,点击关注哦💕 前言 前面已经介绍了类和对象,对C面向对象编程已经有了全面认识,接下来要学习对语言学习比较重要的是对内存的管理。 一、内存的分区 代码区:存放程序的机器指令,通常是可…

js实现数组的下标为n的对象后面新增一条对象

前言: js实现数组的下标为n的对象后面新增一条对象 实现方法: arr.splice(1, 0, obj); splice 参数1: 数组里面的第几个元素,你希望在第几个对象后面新增参数2: 0 表示不删除任何元素参数3: 插入的新对象 let arr [{},{},{},{}] let obj…

vue使用echarts开发大屏可视化(附echarts案例资源)

近年来,可视化在前端领域是越来越多。最近投入的一个项目就是关于大屏可视化,基本就是用到了echarts,所以项目结束后,我也来总结一下如何在Vue中去引入echarts并使用。 文章目录 一、echarts案例网站可视化社区(https://www.makea…

Zoho Mail企业邮箱好用吗?

企业在选择企业邮箱时需要考虑三大因素,一是安全隐私,二是功能易用,三是产品价格。作为国际排行前五的企业邮箱,Zoho邮箱好用吗?本文将为您详细介绍Zoho邮箱的功能、安全性和产品价格。 一、安全隐私 1、数据加密与安…

MySQL----初始数据类型

前言 一、tinyint 范围:-128-----127 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的。如果我们向mysqlt特定的类型中插入不合法的数据,Mysq一般会直接拦截&#xff0c…

【HarmonyOS学习】定位相关知识(Locationkit)

简介 LocationKit提供了定位服务、地理围栏、地理编码、逆地理编码和国家码等功能。 可以实现点击获取用户位置信息、持续获取位置信息和区域进出监控等多项功能。 需要注意,需要确定用户已经开启定位信息,一下的代码没有做这一步的操作,默…

p17面试题

品茗面试题 1.交换两个int变量的值&#xff0c;不能使用第三个变量&#xff0c;即a3,b5,交换后&#xff0c;a5,b3&#xff1b; #include<stdio.h> //int main(){ // //打印函数&#xff0c;引用头文件.stdio.h // printf("hello world\n");//打印函数 …

C++STL详解(二)——string类的模拟实现

首先&#xff0c;我们为了防止命名冲突&#xff0c;我们需要在自己的命名空间内实现string类。 一.string类基本结构 string类的基本结构和顺序表是相似的&#xff0c;结构如下&#xff1a; //.h namespace kuzi {class string{private:char* _str;//字符串size_t _size;//长…

算法基础之回溯法

本文将详细介绍回溯法的基本原理和适用条件&#xff0c;并通过经典例题辅助读者理解回溯法的思想、掌握回溯法的使用。本文给出的例题包括&#xff1a;N皇后问题、子集和问题。 算法原理 在问题的解空间树中&#xff0c;回溯法按照深度优先的搜索策略&#xff0c;从根结点出发…