Chinaunix首页 | 论坛 | 博客
  • 博客访问: 110951
  • 博文数量: 39
  • 博客积分: 2032
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-09 10:21
文章分类
文章存档

2011年(2)

2010年(22)

2009年(15)

我的朋友

分类: LINUX

2010-07-08 16:48:43

新博客:

公有类型:

class Key

静态公有成员:

类型

函数头

说明

int

cacheLimit () [static]

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

void

clear ()  [static]

将缓存中的所有pixmaps清空

bool

find (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);

bool

find (const  Key, & key, QPixmap * pixmap ) [static]

同上,注意key类型不同。如果pixmap没有找到,说明key已经无效,在下一次插入的时候会被该key会被释放

bool

insert ( const QString & key, const QPixmap & pixmap ) [static]

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

Key

insert ( const QPixmap & pixmap ) [static]

同上,返回的是key

void

remove (const QString & key ) [static]

从缓存中将key对应的pixmap副本删除

void

remove (const Key & key) [static]

同上,另外key在下一次插入的时候删除

bool

replace (const Key & key, const QPixmap & pixmap ) [static]

使用新的pixmap取代原来key所对应的pixmap副本,替换成功返回true,否则返回false

void

setCacheLimit (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。

阅读(2127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~