当前位置: 首页 > 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…...

C++学习笔记26:static 静态成员

目录 一、为什么需要静态成员&#xff1f; 二、静态成员变量 三、静态成员变量需要类外定义 四、用静态成员变量统计对象个数 五、静态成员变量不占对象空间 六、静态成员函数 七、静态成员函数没有 this 指针 八、静态成员函数可以访问静态成员 九、调用方式 1. 通过…...

【DeepSeek本地部署终极指南】:20年AI工程师亲测的5步零失败落地法(含GPU资源优化秘籍)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek本地部署的底层逻辑与价值重定义 DeepSeek系列大模型的本地化部署&#xff0c;本质上是对AI能力所有权、数据主权与计算自主权的三重回归。它并非简单地将远程API替换为本地服务&#xff0c;而是重构…...

数据决定上限,准备决定成败:DeepSeek同源训练数据预处理全链路拆解,错过这3个关键阈值=白训2000卡时

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;数据决定上限&#xff0c;准备决定成败&#xff1a;DeepSeek同源训练数据预处理全链路总览 高质量大模型的基石并非仅在于参数规模或算力堆叠&#xff0c;而深植于训练数据的纯净度、多样性与结构化程度。De…...

摒弃地毯式盲搜,智能定位指引科学救援方向 ——视频孪生无感定位驱动煤矿智能化抢险救援技术方案

摒弃地毯式盲搜&#xff0c;智能定位指引科学救援方向——视频孪生无感定位驱动煤矿智能化抢险救援技术方案一、方案引言煤矿井下灾害具备突发性强、环境复杂多变、次生风险叠加的特征&#xff0c;瓦斯冲击、顶板坍塌、透水淹井事故发生后&#xff0c;巷道结构损毁、通信供电中…...

通过Taotoken用量看板与账单追溯功能实现团队成本精细化管理

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken用量看板与账单追溯功能实现团队成本精细化管理 对于技术团队的管理者而言&#xff0c;在引入大模型能力支持业务创新…...

【仅限头部AI团队内部流通】DeepSeek-Coder 33B代码生成延迟优化白皮书(含vLLM 0.6.3 patch补丁包)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek-Coder 33B模型架构与延迟瓶颈全景分析 DeepSeek-Coder 33B 是一款专为代码理解与生成优化的开源大语言模型&#xff0c;基于标准 LLaMA 架构演进&#xff0c;采用 64 层 Transformer 解码器堆叠&…...

DeepSeek日志异常检测实战:基于时序大模型的动态基线算法(已通过金融级等保三级日志审计验证)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek日志分析方案概述 DeepSeek系列大模型在推理与训练过程中会产生海量结构化与半结构化日志&#xff0c;涵盖请求元数据、token级耗时、KV缓存命中率、显存占用、错误堆栈等关键维度。本方案聚焦…...

DeepSeek审计日志全链路解析:从日志采集、脱敏、存储到SOC对接的7步生产级落地手册

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek审计日志的核心价值与架构全景 DeepSeek审计日志是企业级AI平台安全治理的关键基础设施&#xff0c;它不仅记录模型调用、数据访问、权限变更等关键操作事件&#xff0c;更通过结构化、可追溯、防篡改…...

如何快速搭建高性能Minecraft服务器:CatServer终极整合方案

如何快速搭建高性能Minecraft服务器&#xff1a;CatServer终极整合方案 【免费下载链接】CatServer 高性能和高兼容性的1.12.2/1.16.5/1.18.2版本ForgeBukkitSpigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version ForgeBukkitSpigot server)…...

Sketch MeaXure:现代化设计标注解决方案如何革命性提升团队协作效率与开发质量

Sketch MeaXure&#xff1a;现代化设计标注解决方案如何革命性提升团队协作效率与开发质量 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 执行摘要 Sketch MeaXure作为基于TypeScript重构的Sketch插件&#xff0c;为企…...