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

qt QPixmapCache详解

1、概述

QPixmapCache是Qt框架中提供的一个功能强大的图像缓存管理工具类。它允许开发者在全局范围内缓存QPixmap对象,从而有效减少图像的重复加载,提高图像加载和显示的效率。这对于需要频繁加载和显示图像的用户界面应用来说尤为重要,能够显著提升用户体验。

2、重要方法

QPixmapCache类提供了一组用于插入、查找和删除缓存图像的静态方法,这些方法使用QString类型的key来标识和检索缓存中的QPixmap对象。以下是几个重要的方法:

  • find(const QString &key, QPixmap &pixmap): 根据指定的key在缓存中查找QPixmap对象。如果找到匹配的缓存图像,该方法返回true,并将缓存图像复制到pixmap参数中;如果未找到,则返回false,并忽略pixmap参数。
  • insert(const QString &key, const QPixmap &pixmap): 将指定的QPixmap对象插入到缓存中,并使用给定的key进行标识。如果插入成功,返回true;如果缓存已满或key已存在,则返回false。
  • clear(): 清除缓存中的所有QPixmap对象。这通常用于释放不再需要的缓存资源。
  • remove(const Qstring &key):从缓存中移除指定关键字的位。
  • cacheLimit():返回缓存限制的最大字节数。
  • setCacheLimit(int n):设置缓存限制的最大字节数。
  • totalUsed()const:返回当前缓存中所有位图占用的字节数。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{setWindowTitle("QPixmapCache Example");resize(800, 600);// 创建标签用于显示图片QLabel *label = new QLabel(this);label->setAlignment(Qt::AlignCenter);// 创建按钮用于加载图片QPushButton *loadButton = new QPushButton("Load Image1");QPushButton *loadButton2 = new QPushButton("Load Image2");QPushButton *clearCacheButton = new QPushButton("Clear Cache");// 连接按钮信号与槽函数connect(loadButton, &QPushButton::clicked, this, [label]() {QPixmap pixmap;QString key = "my_image_key";if (!QPixmapCache::find(key, &pixmap)) {// 缓存中未找到,从文件中加载pixmap.load(":/res/c.png");QPixmapCache::insert(key, pixmap);}elseqDebug() << "no find";label->setPixmap(pixmap);});connect(loadButton2, &QPushButton::clicked, this, [label]() {QPixmap pixmap;QString key = "my_image_key2";if (!QPixmapCache::find(key, &pixmap)) {// 缓存中未找到,从文件中加载pixmap.load(":/res/car.png");QPixmapCache::insert(key, pixmap);}elseqDebug() << "no find";label->setPixmap(pixmap);});connect(clearCacheButton, &QPushButton::clicked, this, []() {QPixmapCache::clear();});// 布局管理QHBoxLayout *layout = new QHBoxLayout;layout->addWidget(loadButton);layout->addWidget(loadButton2);layout->addWidget(clearCacheButton);QVBoxLayout *mainLayout = new QVBoxLayout;mainLayout->addWidget(label);mainLayout->addLayout(layout);QWidget *centralWidget = new QWidget;centralWidget->setLayout(mainLayout);setCentralWidget(centralWidget);}

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

           

相关文章:

qt QPixmapCache详解

1、概述 QPixmapCache是Qt框架中提供的一个功能强大的图像缓存管理工具类。它允许开发者在全局范围内缓存QPixmap对象&#xff0c;从而有效减少图像的重复加载&#xff0c;提高图像加载和显示的效率。这对于需要频繁加载和显示图像的用户界面应用来说尤为重要&#xff0c;能够…...

Redis中的持久化

什么是 Redis 持久化&#xff1f; Redis 是一个内存数据库&#xff0c;也就是说它主要把数据存储在内存中&#xff0c;这样可以实现非常高的读写速度。通常&#xff0c;内存数据库是非常快速且高效的&#xff0c;但它也有一个很大的问题&#xff1a;数据丢失的风险。因为当 Red…...

Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称

常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文&#xff0c;数字&#xff0c;英文进行识别&#xff0c;同样数量的汉字和同样数量的英文像素长度是不一样的&#xff0c;当我们限定固定长度后&#xff0c;在界面上的排版不够美观 痛点2…...

SMO+PLL滑膜观测器、MARS模型参考自适应观测器simulink仿真

模型内容介绍&#xff1a; &#xff08;1&#xff09;SMOPLL滑膜观测器通过SMO估计电机的转速和位置信息&#xff0c;并利用PLL技术对这些信息进行跟踪和校正&#xff0c;以实现高精度的电机控制&#xff1b; &#xff08;2&#xff09;MARS是一种基于模型参考自适应控制理论…...

例题解析:利用异或运算(XOR)找出单独的数

异或运算&#xff08;XOR&#xff09; 异或运算是一种位运算&#xff0c;通常用符号 ^ 表示。它的运算规则如下&#xff1a; 如果两个二进制位相同&#xff0c;结果为 0。如果两个二进制位不同&#xff0c;结果为 1。 具体来说&#xff0c;对于两个二进制位 a 和 b&#xff…...

如何处理微信小程序大量未捕获的异常

1&#xff09;如何处理微信小程序大量未捕获的异常 2&#xff09;如何关闭代码创建的纹理的读写&#xff0c;或者创建不带读写的图片 3&#xff09;回收带有贴图和Collider的Mesh&#xff0c;如何正确用对象池维护 4&#xff09;Cloth组件使用在一个篮筐上&#xff0c;运行后篮…...

C#-StringBuilder

string&#xff1a;特殊的引用 每次重新赋值或者拼接时会分配新的内存空间&#xff0c;如果一个字符串经常改变会非常浪费空间。 StringBuilder&#xff1a;C#提供的一个用于处理字符串的公共类 修改字符串而不创建新的对象&#xff0c;需要频繁修改和拼接的字符串可以使用它…...

SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 输入下面的链接进入靶场&#xff08;如果你的地址和我不一样&#xff0c;按照你本地的环境来&#xff09;&#xff1a; http://localhost/sqli-labs/Less-39/ 本关是堆…...

linux安装zookeeper和kafka集群

linux安装zookeeper和kafka集群 一、Zookeeper集群部署安装zookeeper1. 下载2. 上传, 解压3. 配置 Zookeeper 节点4. 创建 myid 文件5. 启动参数更改6. sh文件授权7. 启动集群8. 防火墙开启端口 验证集群 二、kafka集群安装安装Kafka1. 下载Kafka安装包2. 上传到服务器&#xf…...

洞悉 Linux 系统运行细节,使用 atop 监测和回看系统负载状态

Linux系统的资源使用情况&#xff0c;你可以通过使用命令如free、top和netstat来实时监控内存、CPU及端口的使用状态。对于需要追踪历史资源消耗动态的场景&#xff0c;atop命令则能有效帮助用户查看过去的系统负载情况。 本篇教程的灵感源自一位小伙伴的真实经历&#xff1a;…...

“双十一”电商狂欢进行时,在AI的加持下看网易云信IM、RTC如何助力商家!

作为一年一度的消费盛会&#xff0c;2024年“双十一”购物狂欢节早已拉开帷幕。蹲守直播间、在主播热情介绍中点开链接并加购&#xff0c;也已成为大多数人打开“双11”的重要方式。然而&#xff0c;在这火热的购物氛围背后&#xff0c;主播频频“翻车”、优质主播稀缺、客服响…...

Python调用企业微信的扫一扫

在企业微信里面新建了一个应用&#xff0c;指向了搭建服务器上Django写的web应用。 web应用需要使用扫描二维码的功能&#xff0c;就使用了大家都评价效果好的微信的扫一扫&#xff0c;事实也证明微信的扫一扫很好&#xff0c;但实现这个功能还是花了自己不少时间&#xff0c;很…...

速盾:CDN和OBS能共用流量包吗?

CDN和OBS是两种不同的云服务&#xff0c;它们在内容分发和存储方面有着不同的功能和优势。虽然它们都可以用于提供高效的内容分发和存储服务&#xff0c;但是它们的流量包是不能共用的。 CDN&#xff0c;即内容分发网络&#xff0c;是一种通过将内容存储在全球分布的服务器上&…...

第8章 利用CSS制作导航菜单

8.1 水平顶部导航栏 水平莱单导航栏是网站设计中应用范围最广的导航设计&#xff0c;一般放置在页面的顶部。水平 导航适用性强&#xff0c;几乎所有类型的网站都可以使用&#xff0c;设计难度较低。 如果导航过于普通&#xff0c;无法容纳复杂的信息结构&#xff0c;就需要在…...

C# 集合与泛型

文章目录 前言1.什么是集合&#xff1f;2.非泛型集合&#xff08;了解即可&#xff09;2.1常见的非泛型集合 3.泛型的概念4.常用的泛型集合4.1 List < T > <T> <T>4.2 Dictionary<TKey, TValue>4.3 Queue < T > <T> <T>4.4 S t a c…...

el-date-picker 设置开始时间和结束时间

<el-date-picker v-model"ruleForm.RECORDDATE" type"date" placeholder"日期" format"YYYY/M/D" value-format"YYYY/M/D" style"width: 100%;" :disabled-date"publishDateAfter" > </el-dat…...

【Docker】 常用命令

文章目录 介绍Docker和容器化技术什么是Docker&#xff1f;Docker的优势和应用场景Docker的应用场景包括但不限于&#xff1a; 安装和配置Docker安装Docker引擎配置Docker环境 Docker镜像命令搜索镜像拉取镜像查看本地镜像删除本地镜像 Docker容器命令创建容器启动容器停止容器…...

docker compose - 设置名字

只使用 docker compose up 启动容器&#xff0c;默认名字为当前文件夹的名字 设置 project-name&#xff0c;docker 客户端会显示设置的名字&#xff0c;方便区分 docker compose --project-name webtest up错误&#xff1a; docker compose up --project-name webtest 效果…...

工业拍卖平台、信息发布、租赁商城平台系统适用于全行业解决方案。

工业拍卖平台系统是为工业领域的资产交易、设备处置等提供线上拍卖服务的数字化平台。 主要功能&#xff1a; 拍卖信息发布&#xff1a;平台会展示待拍卖的工业资产详细信息&#xff0c;包括设备的名称、型号、规格、使用年限、生产厂家等基本信息&#xff0c;以及资产的图片…...

一个win32 / WTL下多线程库(CThread类)的使用心得

说是多线程库&#xff0c;其实就是一个单独的.h文件&#xff0c;可以方便的放入WTL/win32工程中。 下载地址&#xff1a;CThread. 里面也简单介绍了 用法。 具体用法&#xff0c;首先自定义一个子线程类继承CThreadImpl<T>&#xff0c;注意他是个模板类。 class CMySu…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...