PySide6.QtGui.QPixmapCache

class QPixmapCache

QPixmapCache 类为应用程序提供了一个全局的像素图缓存。More_

概要

方法

静态函数

注意

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

详细描述

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

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

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

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

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

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

注意

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

另请参阅

QPixmap

static cacheLimit()
Return type:

整数

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

默认缓存限制为10240 KB。

另请参阅

setCacheLimit()

static clear()

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

find(key)
Parameters:

keyKey

find(key)
Parameters:

key – str

static find(key, pixmap)
Parameters:
Return type:

布尔

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

static find(key, pixmap)
Parameters:
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)
static insert(pixmap)
Parameters:

pixmapQPixmap

Return type:

Key

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

当插入一个像素图并且缓存即将超过其限制时,它会移除像素图,直到有足够的空间来插入该像素图。

当需要更多空间时,最旧的像素图(缓存中最近最少访问的)将被删除。

另请参阅

setCacheLimit() replace()

static insert(key, pixmap)
Parameters:
Return type:

布尔

将与key关联的pixmap的副本插入到缓存中。

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

当插入一个像素图并且缓存即将超过其限制时,它会移除像素图,直到有足够的空间来插入该像素图。

当需要更多空间时,最旧的像素图(缓存中最近最少访问的)将被删除。

如果对象成功插入缓存,函数返回 true;否则返回 false

另请参阅

setCacheLimit()

static remove(key)
Parameters:

Key

从缓存中移除与key关联的像素图,并释放该键以供未来插入使用。

static remove(key)
Parameters:

key – str

从缓存中移除与key关联的像素图。

static replace(key, pixmap)
Parameters:
Return type:

布尔

注意

此函数已弃用。

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

将给定的key关联的pixmap替换为指定的pixmap。如果pixmap已正确插入缓存,则返回true;否则返回false

传递的 key 现在更新为引用 pixmap。如果有其他 key 的副本,它们仍然引用旧的 pixmap,然而,此函数会从缓存中移除旧的 pixmap。

另请参阅

setCacheLimit() insert()

static setCacheLimit(n)
Parameters:

n – 整数

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

默认设置为10240 KB。

另请参阅

cacheLimit()

class Key

Key 类可以用于高效访问 QPixmapCacheMore_

概要

方法

注意

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

详细描述

使用 insert() 来接收由 pixmap 缓存生成的 Key 实例。您可以将该键存储在您自己的对象中,以实现非常高效的一对一对象到 pixmap 的映射。

__init__()

构造一个空的Key对象。

__init__(other)
Parameters:

其他Key

isValid()
Return type:

布尔

如果与此键关联的缓存像素图存在,则返回true。否则,如果像素图已被刷新,则该键不再有效。

__ne__(key)
Parameters:

Key

Return type:

布尔

__eq__(key)
Parameters:

Key

Return type:

布尔

swap(other)
Parameters:

其他Key