Qt中图像的显示与基本操作

2023-11-09

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放、旋转)。

1. Qt可显示的图像类型

参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。

2. Qt用如何显示图像

通常用QLabel显示图像,QLabel类有setPixmap()函数,可以用来显示图像。也可以直接用QPainter画出图像。

如果图像过大,直接用QLabel显示,将会出现有部分图像显示不出来,这时可以用Scroll Area部件。方法:将QLabel部件放到Scroll Area部件里面,将两个采用栅格布局,当图像超出了QLabel部件大小时,就会产生滑动杆,这样图像就可以都看到了。

3. 显示的方法

步骤:先打开一个图像;将图像文件加载进QImage对象中;再用QPixmap对象获得图像;最后用QLabel选择一个QPixmap图像对象显示。

代码如下:

    QString filename;
    filename=QFileDialog::getOpenFileName(this,
                                          tr("选择图像"), "",
                                          tr("Images (*.png *.bmp *.jpg *.tif *.GIF )")); if(filename.isEmpty())
    { return;
    } else {
        QImage* img=new QImage; if(! ( img->load(filename) ) ) //加载图像  {
            QMessageBox::information(this,
                                     tr("打开图像失败"),
                                     tr("打开图像失败!"));
            delete img; return;
        }
        ui->label->setPixmap(QPixmap::fromImage(*img));
    }


注:也可以直接用QPixmap类的对象采用Load函数加载图像。这里说下QImage和QPixmap类的用处:QImage为图像的像素级访问做了优化,QPixmap使用底层平台的绘制系统进行绘制,无法提供像素级别的操作,而QImage则是使用独立于硬件的绘制系统。

4. 图像缩放

图像缩放采用scaled函数。函数原型

QImage QImage::scaled ( const QSize & size,Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

使用方法如下,还是利用上面的img:

QImage* imgScaled = new QImage;
*imgScaled=img->scaled(width,
                       height,
                       Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(*imgScaled));

scaled函数中width和height表示缩放后图像的宽和高,即将原图像缩放到(width,height)大小。

5. 图像旋转

图像旋转可以利用QImage类的transformed函数,向transformed函数传入QMatrix对象,QMatrix对象指定了旋转的角度。

代码如下:

QImage* imgRatate = new QImage;
QMatrix matrix;
matrix.rotate(270);
*imgRotate = img->transformed(matrix);
ui->label->setPixmap(QPixmap::fromImage(*imgRotate));

注意:rotate函数中参数是旋转的角度,旋转是按顺时针方向旋转的,上面顺时针旋转270度,即逆时针旋转90度。

6. 图像连续缩放
有了图像缩放的基础,就可以实现图像的连续缩放,可以放置一个横向滑竿(中文解释不标准,就是Horizontal Slider部件 ),滑动滑轮的位置以实现图像连续缩放。

Horizontal Slider部件指向的值为整型value,即缩放后的图像为

img->scaled(orignalWidth*value/100,
                         orignalHeight*value/100,
                         Qt::KeepAspectRatio);

orignalWidth和orignalHeight为原始图像的宽和高。

注意:在对原始图像进行缩放多少倍数时,在相应的槽函数内只需要调用Horizontal Slider部件对象的setValue函数即可,因为Horizontal Slider部件滑竿指向的值一旦变化就会触发对应的槽函数来对图像进行缩放。




FROM:  http://blog.chinaunix.net/uid-20382483-id-3503124.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中图像的显示与基本操作 的相关文章

  • 液晶大小

    1 3 5寸液晶 像素点阵 320 240null 2 4 3寸 像素点阵 480 272null
  • QT移植步骤

    1 在开发板的跟目录下新建两个目录 mkdir mini2440 mkdir tslib 2 拷贝相关的文件 2 1把PC机下面的 usr local Trolltech QtEmbedded 4 6 3 arm lib目录下面的所有文件全
  • [Qt教程] 第2篇 在Ubuntu14.04上创建Qt 5.4.0开发环境

    导语 上一篇安装好了Ubuntu系统 在正式进行嵌入式开发之前 我们先在Ubuntu上安装Qt开发环境 确保可以正常进行桌面程序的开发 毕竟程序首先是要在桌面上测试的 这里我们使用最新的Qt 5 4 0版本 正文 一 下载并安装Qt 1 下
  • 在CXXLD libwebkitgtk-1.0.la时候发生 ld terminated with signal 9 [Killed]错误

    当时内存几乎用完了 发生这个错误是因为内存不够 编译不过来 系统是ubuntu 11 04 2G的物理内存不够 swap分区是1G CXXLD libwebkitgtk 1 0 la collect2 ld terminated with
  • QWidget的背景颜色和背景图片的设置

    首先设置autoFillBackground属性为真 然后定义一个QPalette对象 设置QPalette对象的背景属性 颜色或图片 最后设置QWidget对象的Palette 实例 QWidget widget new QWidget
  • [Qt]不带标题栏(FramelessWindowHint)的窗体移动及调整大小

    Qt窗体若设置了 setWindowFlags Qt FramelessWindowHint 运行后该窗体是无法进行移动和调整大小的 那要如何才能让它和普通窗体一样进行移动和调整其大小的呢 方案如下 void QFramelessWindo
  • Qt动画效果展示

    在上一篇博文 Qt动画框架 原创翻译 中 我给大家原创翻译了Qt动画框架并且有文字和代码以及图片共同描述 今天在这篇博文中 主要实践Qt动画 做一个实例来讲解Qt动画使用 其界面如下图所示 由于没有录制为gif动画图片 所以请各位下载查看效
  • QT布局

    布局管理 以下是Qt手册中的 布局管理 的译文 在一个Widget中 Qt布局管理系统提供了一个简单而有效的方式来自动组织子widget 以保证他们能够很好地利用可用空间 介绍 Qt包含一个布局管理类的集合 它们被用来描述widgets如何
  • qt的QLabel中的字体越界

    今天使用文泉驿的中文库wqy zenhei ttc 发现QLabel中的汉字上面切顶了 但是如果一个QLabel和一个QLineEdit并排就不会出现这种现象 最后对QLabel使用样式解决了这个问题 MyLabel gt setStyle
  • 解决QT Creator交叉编译提示make:arm-linux-g++:Command not found 命令找不到

    解决QT Creator交叉编译提示make arm linux g Command not found 命令找不到 初学QT 用QT Creator写了一个小程序 使用ubuntu 11 编译工具使用arm none linux gnue
  • 对话框--QDialog(自定义对话框简单实例)

    dialog h头文件 ifndef DIALOG H define DIALOG H include
  • Qt之QTextEdit

    关于QTextEdit Qt5对Qt4的做了一些小的改动 看上去很多方法都发生了变化 但万变不离其中 如 槽函数setFontFamily const QFont 变为setFontFamily const QString fontFami
  • Tslib和Qt 4.8.4与在开发板上的移植

    这篇博客算是接着Linux 下编译 安装 配置 QT这篇的 搞完PC平台的就来弄一下嵌入式平台的 Linux的东西搞起来麻烦的地方就在于太杂 太散 像QT 各版本之间都有很多差异 因此在网络上查找资料不能光看某一个 必须很多资料综合来判断
  • Qt浅谈之二十二Qt样式表

    一 简介 不断总结好的样式表 美化自己的界面 在实际工作中会不断的更新 二 详解 1 加载样式表文件 html view plain copy QFile file qss stylesheet qss file open QFile Re
  • Qt中图像的显示与基本操作

    Qt可显示基本的图像类型 利用QImage QPxmap类可以实现图像的显示 并且利用类中的方法可以实现图像的基本操作 缩放 旋转 1 Qt可显示的图像类型 参考Qt的帮助文档 可支持的类型 即可以直接读取并显示的格式有BMP GIF JP
  • QT中大connect的使用

    有时候为了测试方便 就直接在main函数中使用按钮的connect 但是必须添加QObject 否则会出错
  • Qt Resize与布局的冲突?

    问题的产生 我用QSplitter创建一个窗口布局之后 由于使用窗口默认初始大小 显示出来的比例不是很好看 因此调用了resize进行窗口大小的调整 调整之后是获得了想要的窗口大小 但是与此同时 却发现了一个问题 也就是经过resize之后
  • QT学习之四:Linux 下 Qt Creator 的一个Qt 项目全过程

    Linux 下 Qt Creator 的一个Qt项目全过程 1 启动桌面上的 Qt Creator 新建工程 HelloWorld 点击 File gt New File orProject 如下图所示 2 新建类 Hello 右键单击项目
  • QPixmap的深拷贝和浅拷贝

    在最近的项目中用到了QPixmap 涉及多线程操作QPixmap对象 为了简单 比如在线程1中构造了一个QPixmap对象 传入线程2 这时调用的函数为operator const QPixmap pixmap 对于不了解QPixmap类的
  • QString::arg() 函数

    例 setWindowTitle tr 1 2 arg shownName arg tr Spreadsheet QString arg 函数用第一个arg 调用会替换 1 第2个arg 调用会替换 2 上面的例子其实可以写作 setWin

随机推荐

  • 416. 分割等和子集

    题目描述 给你一个 只包含正整数 的 非空 数组 nums 请你判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等 示例 1 输入 nums 1 5 11 5 输出 true 解释 数组可以分割成 1 5 5 和 11 示例 2
  • nginx实战总结-request_time和upstream_response_time详解

    一 前言 这个主要是日志模块的延伸 这两个参数 在实战中非常重要 因此提出来单独说 二 图解 从上图中得出以下结论 打印日志是在最后一个步骤 也就是说整套请求完毕后 进行打印 请求的整套时间线 1 客户端 request gt nginx
  • 最大流解决医生排班问题

    目录 问题描述 场景建模 Ford Fulkerson方法 Edmonds karp算法 Dinic算法 问题描述 一个医院有n名医生 现有k个公共假期需要安排医生值班 每一个公共假期由若干天 假日 组成 第j个假期包含的假日用 Dj表示
  • Python接口自动化测试之文件上传

    在接口测试中 经常会涉及到文件上传 文件上传一般包含的文件是图片 视频以及如csv excel 记事本等文件 它的请求头中Content Type对应的value值是multipart form data 这里依据实际的案例来说明文件上传的
  • Makefile 神奇:驾驭编译的力量

    一 make和Makefile 当谈到 make 和 Makefile 时 通常是指构建工具 make 和用于描述编译和构建过程的文本文件 Makefile make 是一个在类Unix系统中广泛使用的构建工具 它基于文件的时间戳比较 只编
  • 【Vue】生命周期回调函数

    生命周期 又名 生命周期回调函数 生命周期函数 生命周期钩子 程序员间沟通常称生命周期钩子 是什么 Vue在关键时刻帮我们调用的一些特殊名称的函数 生命周期函数的名字不可更改 但是函数的具体内容是程序员根据需求编写的 生命周期函数中的 th
  • java中的Socket编程

    基于Socket的java网络编程 网络上的两个程序通过一个双向的通讯连接实现数据的交换 这个双向链路的一端成为一个socket Socket通常用来实现客户方和服务方的连接 Socket是TCP IP协议的一个十分流行的编程界面 一个so
  • window环境下 —Apache 2.4下载、安装配置与卸载

    一 Apache的下载 1 下载地址 https www apachehaus com cgi bin download plx 2 安装Apache 解压后打开conf文件夹下httpd conf文件 修改Apache目录地址 Defin
  • python螺旋矩阵

    Python 螺旋矩阵 给你一个正整数 n 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix class Solution def generateMatrix self n int
  • system.ComponentModel.Win32Exception (0x80004005): 目录名无效。 解决方法

    system ComponentModel Win32Exception 0x80004005 目录名无效 解决方法 参考文章 1 system ComponentModel Win32Exception 0x80004005 目录名无效
  • Neural Filters用不了怎么办?推荐uminar AI for Mac人工智能照片编辑软件

    Luminar AI 1 3 0 for Mac是macOS第一款完全人工智能的照片编辑软件 摄影爱好者和专业摄影师 设计师必备的后期软件 Luminar AI 可以作为独立的照片编辑软件或作为PS LRC插件使用 功能强大媲美PS的神经滤
  • 【Windows】VScode终端添加GitBash,终端直接调用git

    1 打开VScode 文件 gt gt 首选项 gt gt 设置 搜索 shell windows 点击settings json编辑 把下面的语句复制进去 terminal integrated profiles windows Powe
  • 台达b3伺服参数设置方法_台达伺服驱动器参数设置一览表

    台达伺服驱动器参数设置一览表 2020 12 23 台达伺服驱动器的参数设置分为八大群组 从P0到P7 参数群组定义如下 群组 0 监控参数 例 P0 xx 群组 1 基本参数 例 P1 xx 群组 2 扩展参数 例 P2 xx 群组 3
  • oracle 表 xml,详细分析Oracle XML数据

    在向大家详细介绍Oracle XML数据之前 首先让大家了解下Oracle 11g 然后全面介绍Oracle XML数据 在Oracle 11g可以使用CLOB及二进制两种方式保存XML信息 灵活性很高 Oracle 11g还支持针对XML
  • ElementUI/ElementPlus+笔记

    如何修改特定文件下使用的Element组件样式 在哪修改样式 在修改element样式时 最好在scoped中修改避免全局污染 如果在scoped中修改样式不生效就在全局中修改 但是在要修改的样式外面套一层class 避免修改了所有页面 使
  • EasyExcel读写Excel

    转载 侵删 原文链接 https mp weixin qq com s T xBuoYgj1NuM7 yHe084Q 最近读者小 H 在知识星球中给阿粉发来私信 阿粉 最近我在负责公司报表平台开发 需要导出报表到 Excel 中 每次使用
  • CenterNet姿势估计decode部分代码解读

    代码链接 https github com xingyizhou CenterNet blob 1085662179604dd4c2667e3159db5445a5f4ac76 src lib models decode py L497 代
  • npm和yarn的区别(包管理工具)

    包管理工具npm和yarn的一些区别 1 官网文档 npm https www npmjs cn yarn https yarn bootcss com 2 npm存在的一些不足 npm install的时候巨慢 特别是新的项目拉下来要等半
  • 留学文书可以彻底被AI取代吗?留学顾问是否会被AI逼到墙角?

    近日 ChatGPT再次 进化 其最新版本ChatGPT 4又掀高潮 其生产者OpenAI 称 ChatGPT 4是最先进的系统 能生产更安全和更有用的回复 和上一代相比 GPT 4拥有了更广的知识面和更强的解决问题能力 在创意 视觉输入和
  • Qt中图像的显示与基本操作

    Qt可显示基本的图像类型 利用QImage QPxmap类可以实现图像的显示 并且利用类中的方法可以实现图像的基本操作 缩放 旋转 1 Qt可显示的图像类型 参考Qt的帮助文档 可支持的类型 即可以直接读取并显示的格式有BMP GIF JP