Spec-Zone.ru › Qt 5.12

Класс QPixmapCache

Класс QPixmapCache предоставляет кэш пиксельных изображений для всего приложения. Подробнее...

Заголовок: #include <QPixmapCache>
qmake: QT += gui
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Типы публичного доступа

класс Key
класс KeyData

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

int cacheLimit()
void clear()
bool find(const QString &key, QPixmap *pixmap)
bool find(const QPixmapCache::Key &key, QPixmap *pixmap)
bool insert(const QString &key, const QPixmap &pixmap)
QPixmapCache::Key insert(const QPixmap &pixmap)
void remove(const QString &key)
void remove(const QPixmapCache::Key &key)
bool replace(const QPixmapCache::Key &key, const QPixmap &pixmap)
void setCacheLimit(int n)

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

Класс QPixmapCache предоставляет кэш пиксельных изображений для всего приложения.

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

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

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

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

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

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

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

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

[static] int QPixmapCache::cacheLimit()

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

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

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

[static] void QPixmapCache::clear()

Удаляет все пиксельные изображения из кэша.

[static] bool QPixmapCache::find(const QString &key, QPixmap *pixmap)

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

Эта функция была добавлена в Qt 4.6.

[static] bool QPixmapCache::find(const QPixmapCache::Key &key, QPixmap *pixmap)

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

Эта функция была добавлена в Qt 4.6.

[static] bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)

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

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

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

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

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

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

[static] QPixmapCache::Key QPixmapCache::insert(const QPixmap &pixmap)

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

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

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

Эта функция была добавлена в Qt 4.6.

См. также setCacheLimit() и replace().

[static] void QPixmapCache::remove(const QString &key)

Удаляет пиксельное изображение, связанное с ключом key, из кэша.

[static] void QPixmapCache::remove(const QPixmapCache::Key &key)

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

Эта функция была добавлена в Qt 4.6.

[static] bool QPixmapCache::replace(const QPixmapCache::Key &key, const QPixmap &pixmap)

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

Эта функция была добавлена в Qt 4.6.

См. также setCacheLimit() и insert().

[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-5.12/qpixmapcache.html

Spec-Zone.ru

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