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

qt QPixmap详解

1、概述

QPixmap是Qt框架中用于处理图像的一个类。它提供了对图像文件(如PNG、JPG、BMP等)的加载、保存、绘制和转换功能。QPixmap主要存储在设备内存中,因此适用于需要频繁访问和绘制的图像,如游戏中的精灵图、界面背景等。QPixmap支持多种图像格式,并提供了丰富的API来操作这些图像。

2、重要方法
  • load(const QString &fileName, const QString &format = QString(), Qt::ImageConversionFlags flags = Qt::AutoColor):从文件中加载图像。可以指定图像格式和转换标志。
  • save(const QString &fileName, const QString &format = QString(), int quality = -1):将图像保存到文件中。可以指定保存格式和质量。
  • scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation):按指定大小和纵横比模式缩放图像。
  • convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor):将QPixmap转换为指定的QImage格式。
  • isNull():检查QPixmap是否为空(即是否未成功加载图像)。
  • size():返回QPixmap的尺寸。
  • rect():返回QPixmap的矩形区域。
  • depth():返回QPixmap的颜色深度。
#include <QApplication>  
#include <QLabel>  
#include <QPixmap>  
#include <QVBoxLayout>  
#include <QWidget>  
  
class ImageWidget : public QWidget {  
public:  
    ImageWidget(QWidget *parent = nullptr) : QWidget(parent) {  
        QVBoxLayout *layout = new QVBoxLayout(this);  
  
        // 加载图像  
        QPixmap pixmap(":/images/example.png");  
        if (pixmap.isNull()) {  
            qWarning() << "Failed to load image.";  
            return;  
        }  
  
        // 缩放图像  
        QPixmap scaledPixmap = pixmap.scaled(200, 200, Qt::KeepAspectRatio);  
  
        // 创建QLabel并设置图像  
        QLabel *label = new QLabel(this);  
        label->setPixmap(scaledPixmap);  
  
        // 将QLabel添加到布局中  
        layout->addWidget(label);  
  
        // 设置窗口布局  
        setLayout(layout);  
    }  
};  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
  
    ImageWidget widget;  
    widget.show();  
  
    return app.exec();  
}  

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/379562.html

相关文章:

  • 华为OD机试 - 无重复字符的元素长度乘积的最大值(Python/JS/C/C++ 2024 C卷 100分)
  • 相机硬触发
  • 【AI】【提高认知】深度学习与反向传播:理解AI的基础
  • git入门教程12:git命令与技巧
  • GBase与梧桐数据库数据加载与导出的差异
  • 嵌入式操作系统FreeRTOS
  • 深入了解 Kotlin 高阶函数
  • SpringBoot实现:高效在线试题库系统
  • koa + sequelize做距离计算(MySql篇)
  • 使用WordPress快速搭建个人网站
  • 汽车电子行业数字化转型的实践与探索——以盈趣汽车电子为例
  • Python酷库之旅-第三方库Pandas(193)
  • 【工具变量】中国制造2025试点城市数据集(2000-2023年)
  • Maven核心概念
  • Linux-计算机网络-epoll的LT,ET模式
  • 力扣150:逆波兰表达式求值
  • 使用Web Workers实现JavaScript的多线程编程
  • 【WebRTC】WebRTC的简单使用
  • 【嵌入式面试高频知识点】-MQTT协议
  • 【appium 安卓10 QQ发送消息】
  • 不用买PSP,画质甚至更好,这款免费神器让你玩遍经典游戏
  • 基于卷积神经网络的棉花病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • Spring的常用注解之@Component——day1
  • 【Keyframes】Deep Convolutional Pooling Transformer for Deepfake Detection
  • 【VMware】使用笔记
  • STL:标准模板库