Spec-Zone.ru › Qt

Класс QPixmapCache

Класс QPixmapCache предоставляет кэш пиксем для всего приложения. Подробнее...

Заголовок: #include <QPixmapCache>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая унаследованные

Типы

класс Ключ

Статические публичные члены

int cacheLimit()
void очистить()
bool найти(const QString &ключ, QPixmap *пиксем)
bool найти(const QPixmapCache::Key &ключ, QPixmap *пиксем)
bool вставить(const QString &ключ, const QPixmap &пиксем)
QPixmapCache::Key вставить(const QPixmap &пиксем)
void удалить(const QString &ключ)
void удалить(const QPixmapCache::Key &ключ)
bool заменить(const QPixmapCache::Key &ключ, const QPixmap &пиксем)
void установитьПределКэша(int n)

Подробное описание

Этот класс — инструмент для оптимизированного рисования с помощью QPixmap. Вы можете использовать его для хранения временных пиксемов, которые сложно сгенерировать, не используя больше места, чем cacheLimit(). Используйте insert() для вставки пиксемов, find() для их поиска и clear() для очистки кэша.

QPixmapCache не содержит данных членов, только статические функции для доступа к глобальному кэшу пиксемов. Он создаёт внутренний объект QCache для кэширования пиксемов.

Кэш связывает пиксем с предоставленной пользователем строкой в качестве ключа или с QPixmapCache::Key, сгенерированным кэшем. Использование QPixmapCache::Key в качестве ключей быстрее, чем использование строк. Строчный API очень удобен для сложных ключей, но API QPixmapCache::Key будет очень эффективным и удобным для сопоставления «объект — пиксем» один к одному — в этом случае вы можете хранить ключи в качестве членов объекта.

Если в кэш вставлены два пиксема с одинаковыми ключами, то последний пиксем заменит первый пиксем в кэше. Это соответствует поведению классов QHash и QCache.

Кэш заполняется, когда общий размер всех пиксемов в кэше превышает cacheLimit(). Начальный предел кэша составляет 10240 КБ (10 МБ); вы можете изменить его, вызвав setCacheLimit() с необходимым значением. Пиксем занимает примерно (ширина * высота * глубина)/8 байт памяти.

Статья Optimizing with QPixmapCache в Qt Quarterly объясняет, как использовать QPixmapCache для ускорения приложений путём кэширования результатов рисования.

Примечание: QPixmapCache можно использовать только из основного потока приложения. Доступ из других потоков будет игнорироваться и вернёт неудачу.

См. также QCache и QPixmap.

Документация по функциям-членам

[static] int QPixmapCache::cacheLimit()

Возвращает предел кэша (в килобайтах).

По умолчанию предел кэша составляет 10240 КБ.

См. также установитьПределКэша().

[static] void QPixmapCache::clear()

Удаляет все пиксемы из кэша.

[static] bool QPixmapCache::find(const QString &ключ, QPixmap *пиксем)

Ищет пиксем в кэше, связанный с заданным ключом. Если пиксем найден, функция устанавливает пиксем на этот пиксем и возвращает true; в противном случае она оставляет пиксем неизменным и возвращает 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);

[static] bool QPixmapCache::find(const QPixmapCache::Key &ключ, QPixmap *пиксем)

Ищет пиксем в кэше, связанный с заданным ключом. Если пиксем найден, функция устанавливает пиксем на этот пиксем и возвращает true; в противном случае она оставляет пиксем неизменным и возвращает false. Если пиксем не найден, это означает, что ключ больше не действителен, поэтому он будет освобождён для следующей вставки.

[static] bool QPixmapCache::insert(const QString &ключ, const QPixmap &пиксем)

Вставляет копию пиксема пиксем, связанного с ключом, в кэш.

Все пиксемы, вставленные библиотекой Qt, имеют ключ, начинающийся с «$qt», поэтому ваши собственные ключи пиксемов никогда не должны начинаться с «$qt».

Когда пиксем вставляется, а кэш приближается к своему пределу, он удаляет пиксемы до тех пор, пока не будет достаточно места для вставки пиксема.

Самые старые пиксемы (наименее недавно обращённые в кэше) удаляются, когда требуется больше места.

Функция возвращает true если объект был вставлен в кэш; в противном случае она возвращает false.

См. также установитьПределКэша().

[static] QPixmapCache::Key QPixmapCache::insert(const QPixmap &пиксем)

Вставляет копию заданного пиксема в кэш и возвращает ключ, который может быть использован для его извлечения.

Когда пиксем вставляется, а кэш приближается к своему пределу, он удаляет пиксемы до тех пор, пока не будет достаточно места для вставки пиксема.

Самые старые пиксемы (наименее недавно обращённые в кэше) удаляются, когда требуется больше места.

См. также установитьПределКэша() и заменить().

[static] void QPixmapCache::remove(const QString &ключ)

Удаляет пиксем, связанный с ключом, из кэша.

[static] void QPixmapCache::remove(const QPixmapCache::Key &ключ)

Удаляет пиксем, связанный с ключом, из кэша и освобождает ключ для будущей вставки.

[static] bool QPixmapCache::replace(const QPixmapCache::Key &ключ, const QPixmap &пиксем)

Заменяет пиксем, связанный с заданным ключом, на указанный пиксем. Возвращает true если пиксем был правильно вставлен в кэш; в противном случае возвращает false.

См. также установитьПределКэша() и вставить().

[static] void QPixmapCache::setCacheLimit(int n)

Устанавливает предел кэша в n килобайт.

Значение по умолчанию — 10240 КБ.

См. также cacheLimit().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qpixmapcache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API