linux下的qt没有qpixma类吗,QT DOC翻译: QPIXMAPCACHE CLASS

本文介绍了Qt的QPixmapCache类,展示了如何通过cacheLimit()设置缓存大小,find(), insert(), clear()等函数进行pixmap的管理和优化。重点讲解了缓存机制、内存占用计算及在应用程序中的应用场景。
摘要由CSDN通过智能技术生成

新博客:

公有类型:

class Key

静态公有成员:

类型函数头说明

intcacheLimit () [static]返回缓存上限,单位kb。默认值:嵌入式平台:2048 KB, 桌面平台:10240 KB

voidclear ()  [static]将缓存中的所有pixmaps清空

boolfind (const QString & key, QPixmap * pixmap ) [static]通过key查找缓存中的pixmap,若找到则将pixmap返回给参数中的pixmap并返回true,否则对pixmap不做处理并返回false。示例:

QPixmap pm; if (!QPixmapCache::find("my_big_image", &pm)) {     pm.load("bigimage.png");     QPixmapCache::insert("my_big_image", pm); } painter->drawPixmap(0, 0, pm);

boolfind (const  Key, & key, QPixmap * pixmap ) [static]同上,注意key类型不同。如果pixmap没有找到,说明key已经无效,在下一次插入的时候会被该key会被释放

boolinsert ( const QString & key, const QPixmap & pixmap ) [static]将pixmap的一份副本和对应的key添加到缓存中。所有使用Qt库缓存的pixmap的key都以$qt开头,所以你自己的key绝对不要以$qt开头。当一个pixmap将要被插入到一个快要满的缓存空间中时,缓存会不断删除原来的图片直到拥有足够的空间能放下新的pixmap,删除的是那些最旧且最少使用的pixmap。插入成功时返回true,否则是false

Keyinsert ( const QPixmap & pixmap ) [static]同上,返回的是key

voidremove (const QString & key ) [static]从缓存中将key对应的pixmap副本删除

voidremove (const Key & key) [static]同上,另外key在下一次插入的时候删除

boolreplace (const Key & key, const QPixmap & pixmap ) [static]使用新的pixmap取代原来key所对应的pixmap副本,替换成功返回true,否则返回false

voidsetCacheLimit (int n) [static]将缓存上限设置为n kb

详细描述

QPixmapCache 类为pixmap提供了一个应用范围内的缓存机制。

这个类是一个工具,主要用于优化QPixmap类的画图过程。你可以在cacheLimit ()函数允许的大小范围内存储一些绘制开销较大的临时pixmap。可以使用insert()方法缓存pixmap,使用find()函数查找,使用clear()函数清空缓存。

QPixmapCache 不包含数据成员,只有用于访问全局pixmap缓存的静态函数。在缓存pixmaps时,它会创建一个内部的QCache对象。

pixmap缓存使用用户提供的一个字符串作,或者是cache产生的一个QPixmapCache::Key来作为键key。使用QPixmapCache::Key()比使用字符串要快。相比负载的QPixmaCache::Key来说,字符串的API要方便的多,但是QPixmapCache::Key的效率更高,也更加适合pixmap-缓存对象这种一一映射模式。key可以作为QPixmapCache对象的一个数据成员。

如果两个pixmap在使用insert方法添加到缓存中区的时候使用了同一个Key,那么在缓存中后者将代替前者。这和QHash和QCache类中的行为一致。

当缓存中所保存的所有的pixmap的总大小超过 cacheLimit ()时说明缓存满了。在嵌入式平台上初始缓存的大小为2048 KB (2MB),在桌面平台上是10240 KB (10MB),改值可以通过setCacheLimit()函数来改变。一个pixmap所占的大小可以通过如下方式计算:

所占内存=(高*宽*深度)/8 bytes

Qt季刊上的一篇文章Optimizing with QPixmapCache 阐述了如何使用QPixmapcache来缓存绘图的结果,从而加速你的应用程序。

另请参见 QCache和QPixmap。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QPixmapCacheQt中的一个,用于对图像进行缓存。它内部实现了一个QCache似于QMap,但有一些特殊的好处。首先,QPixmapCache可以自动管理缓存中对象的生命周期,不需要手动删除缓存中的对象。其次,QCache还实现了一些额外的功能,比如设置缓存的大小限制等。 使用QPixmapCache进行缓存的好处是,它可以通过设置缓冲区的大小限制来控制缓存中的图像数量。这样可以避免缓存过多的图像,导致内存占用过大。而使用QMap来进行缓存的话,需要手动管理内存,可能会增加一些额外的工作量。 在初始化函数中,可以使用QPixmapCache::setCacheLimit()方法来设置缓冲区的大小限制。例如,设置为1表示缓冲区内只能放一张图片,这样当加载新的图片时,会替换掉原来的图片。 需要注意的是,QPixmapCache加载图片时是将图片加载到缓冲区中,即QPixmapCache内部维护的缓存。当再次加载同一张图片时,由于缓冲区已经有了相同的图片,所以直接返回true,但实际上缓冲区内的图片可能已经被替换为新的图片了。所以在使用QPixmapCache时需要注意这一点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Qt之 图像(使用QPixmapCache优化程序)](https://blog.csdn.net/Black_Silencer/article/details/117333965)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [QPixmap](https://blog.csdn.net/caihuisinx/article/details/7343916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值