新博客:
公有类型:
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。