class QPixmapCache#

QPixmapCache 类提供了一个应用程序范围的位图缓存。 更多

概述#

方法#

静态函数#

备注

此文档可能包含自动从 C++ 转译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有误,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式来告诉我们。

详细描述#

该类是一个用于优化使用 QPixmap 绘图的工具。您可以使用它来存储昂贵的生成像素图而不会超过 cacheLimit() 的临时像素图,更多存储空间。使用 insert() 插入像素图,find() 查找它们,以及 clear() 清空缓存。

QPixmapCache 不包含成员数据,只包含访问全局像素图缓存的静态函数。它为缓存像素图创建了一个内部 QCache 对象。

缓存将一个像素图与用户提供的字符串键或与缓存生成的 Key 关联起来。使用 Key 作为键比使用字符串更快。字符串 API 对于复杂键非常方便,但 Key API 将非常高效且方便地进行一对一对象到像素图的映射 - 在这种情况下,您可以将键作为对象的成员存储。

如果在缓年中使用相同键插入两个像素图,则最后插入的像素图将替换第一个像素图。这遵循 QHash 和 QCache 类的行为。

当缓存中所有像素图的总大小超过 cacheLimit() 时,缓存将满。初始缓存限制为 10240 KB(10 MB);您可以通过调用 setCacheLimit() 并传递所需值来更改此限制。一个像素图大约需要 (width * height * depth)/8 字节的内存。

Qt Quarterly 文章 使用 QPixmapCache 优化 解释了如何使用 QPixmapCache 通过缓存绘画结果来加速应用程序。

备注

QPixmapCache 只能在应用程序的主线程中使用。来自其他线程的访问将被忽略并返回失败。

另请参阅

QPixmap

静态cacheLimit()#
返回类型:

int

返回缓存限制(以千字节为单位)。

默认缓存限制为 10240 KB。

另请参阅

setCacheLimit()

静态clear()#

从缓存中删除所有像素图。

find(arg__1)#
参数:

arg__1Key

静态 find(key, pixmap)
参数:
返回类型:

bool

在缓存中查找与给定 key 关联的缓存的位图。如果找到位图,函数将 pixmap 设置为该位图并返回 true;否则,不修改 pixmap 并返回 false。如果找不到位图,这意味着 key 已不再有效,因此它将被释放以供下次插入。

find(arg__1)
参数:

arg__1 – str

静态 find(key, pixmap)
参数:
返回类型:

bool

警告

本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。

在缓存中查找与给定 key 关联的缓存的位图。如果找到位图,函数将 pixmap 设置为该位图并返回 true;否则,不修改 pixmap 并返回 false

示例

pm = QPixmap()
if not QPixmapCache.find("my_big_image", pm):
    pm.load("bigimage.png")
    QPixmapCache.insert("my_big_image", pm)

painter.drawPixmap(0, 0, pm)
静态 insert(pixmap)#
参数:

pixmapQPixmap

返回类型:

将给定 pixmap 的副本插入缓存,并返回一个键值,可用于检索它。

当插入位图且缓存即将超出其限制时,它将删除位图,直到有足够的空间插入位图。

当需要更多空间时,最早创建的位图(在缓存中访问时间最久)将被删除。

另请参阅

setCacheLimit() replace()

静态 insert(key, pixmap)
参数:
返回类型:

bool

将与 key 关联的位图 pixmap 的副本插入缓存。

Qt 库插入的所有位图都有一个以 “$qt” 开头的键,因此您自己的位图键不应以 “$qt” 开头。

当插入位图且缓存即将超出其限制时,它将删除位图,直到有足够的空间插入位图。

当需要更多空间时,最早创建的位图(在缓存中访问时间最久)将被删除。

此函数在对象被插入缓存时返回 true;否则返回 false

另请参阅

setCacheLimit()

静态的remove(key)#
参数:

keyKey

从缓存中删除与 key 关联的位图并释放该键以供将来插入。

静态的remove(key)
参数:

key – str

从缓存中删除与 key 关联的位图。

静态的replace(key, pixmap)#
参数:
返回类型:

bool

备注

此函数已被弃用。

请使用 remove(key); key = insert(pixmap); 代替。

用指定的 key 替换与该键关联的位图为 pixmap。如果位图已正确插入缓存,则返回 true;否则返回 false

传入的 key 已更新为引用 pixmap。如果有其他 key 的副本,它们仍然引用旧的位图,然而,此函数会从缓存中删除该旧位图。

另请参阅

setCacheLimit() insert()

静态的setCacheLimit(arg__1)#
参数:

arg__1 – int

将缓存限制设置为 n 千字节。

默认设置为 10240 KB。

另请参阅

cacheLimit()