QPixmap用法总结

QPixmap用法总结QPixmap 与 QImage 的区别 QPixmap 依赖于硬件 QImage 不依赖于硬件 QPixmap 主要是用于绘图 针对屏幕显示而最佳化设计 QImage 主要是为图像 I O 图片访问和像素修改而设计的 当图片小的情况下 直接用 QPixmap 进行加载 画图时无所谓 当图片大的时候如果直接用 QPixmap 进行加载 会占很大的内存 一般一张几十 K 的图片 用 QPixmap 加载进来会放大很多倍 所以一般图片大的情况下 用 QImage 进行加载 然后转乘 QPixmap 用户绘制 QPixmap 绘制效果是最好的 Q

QPixmap与QImage的区别:

QPixmap依赖于硬件,QImage不依赖于硬件。

Qpixmap用法:(转自http://blog.csdn.net/caihuisinx/article/details/)

我想qt 中QPixmap这个类大家都很熟悉,它可以很简单的在标签上贴图;例如:

QPixmap p;

p.load(“1.png”);

label->setPixmap§;

就这么简单,但是我今天突然发现个问题,就是:

QPixmap p;

p.load(“1.png”);

label->setPixmap§;

p.load(“2.png”);

label->setPixmap§;

p.load(“1.png”);

label->setPixmap§;

当用同一个p,即全局变量时,你加载图片1,显示图片1;再加载图片2,显示图片2;可当你再想变回图片一时,你再加载图片一,不好使了,变不回来了,还是显示图片二,你在加载个图片三,好使,再想变回图片二,不好使了。。。。。。

这是为神马呢???

原来,p.load()是将图片加载到缓冲区中:QPixmapCache,当你加载图片二是,图片一并没有被覆盖,此时缓冲区内有图片一和图片二,当你再次加载图片一时,以为缓冲区里应经有了,所以p.load(),直接返回true;但是图片仍是图片二,所以不能显示回图片一!

解决办法很简单,有三种办法:

一、 直接定义局部变量,这样每次都是新的缓冲区;

二、 当再次加载图片时,先将缓冲区清空, QPixmapCache::clear();然后再加载;

三、 在初始化函数里写:QPixmapCache::setCacheLimit(1);设置缓冲区内只能放一张图片,这样就会替换原来的图片,就可以加载新的图片了!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211088.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:14
下一篇 2026年3月18日 下午11:14


相关推荐

  • 方向余弦矩阵与四元数

    方向余弦矩阵与四元数姿态解算方向余弦四元数 方向余弦四元数四元数是由实数和虚数组成的一组超复数 假设 Q 是一个四元数 Q w xi yj zj

    2026年3月19日
    2
  • Spark是什么?

    Spark是什么?Spark 是个通用的集群计算框架 通过将大量数据集计算任务分配到多台计算机上 提供高效内存计算 如果你熟悉 Hadoop 那么你知道分布式计算框架要解决两个问题 如何分发数据和如何分发计算 Hadoop 使用 HDFS 来解决分布式数据问题 MapReduce 计算范式提供有效的分布式计算 类似的 Spark 拥有多种语言的函数式编程 API 提供了除 map 和 reduce 之外更多的运算符 这些操作是

    2026年3月17日
    2
  • n8n自动化测试入门指南(二):核心节点详解与实战教程

    n8n自动化测试入门指南(二):核心节点详解与实战教程

    2026年3月15日
    2
  • 别再只当“赛博铲屎官”了!拆解OpenClaw背后的3条阶梯式搞钱路径

    别再只当“赛博铲屎官”了!拆解OpenClaw背后的3条阶梯式搞钱路径

    2026年3月16日
    2
  • 卷积神经网络的卷积层_卷积神经网络详解

    卷积神经网络的卷积层_卷积神经网络详解模块融合:将一些相邻模块进行融合以提高计算效率,比如conv+relu或者conv+batchnormalization+relu,最常提到的BN融合指的是conv+bn通过计算公式将bn的参数融入到weight中,并生成一个bias;上图详细描述了BN层计算原理以及如何融合卷积层和BN层,这里进行验证:定义三个模型:定义模型1:一层卷积层和一层BN层网络importnumpyasnpimportmathimporttorchimporttorch.nn.

    2022年10月10日
    4
  • python求乘积_Python实现求笛卡尔乘积方法详解

    python求乘积_Python实现求笛卡尔乘积方法详解这篇文章主要介绍了 Python 实现求笛卡尔乘积的方法 结合实例形式分析了 Python 计算笛卡尔乘积的原理与实现技巧 需要的朋友可以参考下本文实例讲述了 Python 实现求笛卡尔乘积的方法 分享给大家供大家参考 具体如下 在数学中 两个集合 X 和 Y 的笛卡尓乘积 Cartesianpro 又称直积 表示为 X Y 第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员 假设集合 A

    2025年11月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号