分类: 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; |
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。