PySide6.QtGui.QPixmapCache¶
- class QPixmapCache¶
QPixmapCache
类为应用程序提供了一个全局的像素图缓存。More_…概要¶
方法¶
def
find()
静态函数¶
def
cacheLimit()
def
clear()
def
find()
def
insert()
def
remove()
def
replace()
def
setCacheLimit()
注意
本文档可能包含从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()
并传入所需的值来更改此限制。一个像素图大约占用(宽度 * 高度 * 深度)/8字节的内存。Qt Quarterly 文章 Optimizing with QPixmapCache 解释了如何使用
QPixmapCache
通过缓存绘图结果来加速应用程序。- static cacheLimit()¶
- Return type:
整数
返回缓存限制(以千字节为单位)。
默认缓存限制为10240 KB。
另请参阅
- static clear()¶
从缓存中移除所有像素图。
- find(key)
- Parameters:
key – str
在缓存中查找与给定
key
关联的缓存像素图。如果找到像素图,函数将pixmap
设置为该像素图并返回true
;否则,它不会改变pixmap
并返回false
。如果未找到像素图,这意味着key
不再有效,因此它将为下一次插入释放。- static find(key, pixmap)
- Parameters:
key – str
pixmap –
QPixmap
- Return type:
布尔
警告
本节包含从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)
将给定的
pixmap
的副本插入缓存中,并返回一个可用于检索它的键。当插入一个像素图并且缓存即将超过其限制时,它会移除像素图,直到有足够的空间来插入该像素图。
当需要更多空间时,最旧的像素图(缓存中最近最少访问的)将被删除。
另请参阅
- static insert(key, pixmap)
- Parameters:
key – str
pixmap –
QPixmap
- Return type:
布尔
将与
key
关联的pixmap
的副本插入到缓存中。由Qt库插入的所有pixmap都有一个以“$qt”开头的键,因此您自己的pixmap键不应以“$qt”开头。
当插入一个像素图并且缓存即将超过其限制时,它会移除像素图,直到有足够的空间来插入该像素图。
当需要更多空间时,最旧的像素图(缓存中最近最少访问的)将被删除。
如果对象成功插入缓存,函数返回
true
;否则返回false
。另请参阅
从缓存中移除与
key
关联的像素图,并释放该键以供未来插入使用。- static remove(key)
- Parameters:
key – str
从缓存中移除与
key
关联的像素图。使用
remove(key); key = insert(pixmap);
代替。将给定的
key
关联的pixmap替换为指定的pixmap
。如果pixmap
已正确插入缓存,则返回true
;否则返回false
。传递的
key
现在更新为引用pixmap
。如果有其他key
的副本,它们仍然引用旧的 pixmap,然而,此函数会从缓存中移除旧的 pixmap。另请参阅
- static setCacheLimit(n)¶
- Parameters:
n – 整数
将缓存限制设置为
n
千字节。默认设置为10240 KB。
另请参阅
- class Key¶
Key
类可以用于高效访问QPixmapCache
。More_…概要¶
方法¶
def
__init__()
def
isValid()
def
__ne__()
def
__eq__()
def
swap()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
使用
insert()
来接收由 pixmap 缓存生成的 Key 实例。您可以将该键存储在您自己的对象中,以实现非常高效的一对一对象到 pixmap 的映射。- __init__()¶
构造一个空的Key对象。
- __init__(other)
- Parameters:
其他 –
Key
- isValid()¶
- Return type:
布尔
如果与此键关联的缓存像素图存在,则返回
true
。否则,如果像素图已被刷新,则该键不再有效。