Класс QPixmapCache
Класс QPixmapCache предоставляет кэш пиктограмм на уровне всего приложения. Подробнее...
| Заголовок: | #include <QPixmapCache> |
| qmake: | QT += gui |
Типы публичного доступа
| класс | Key |
| класс | KeyData |
Статические члены публичного доступа
| int | cacheLimit() |
| void | clear() |
| bool | find(const QString &key, QPixmap *pixmap) |
| bool | find(const Key &key, QPixmap *pixmap) |
| bool | insert(const QString &key, const QPixmap &pixmap) |
| Key | insert(const QPixmap &pixmap) |
| void | remove(const QString &key) |
| void | remove(const Key &key) |
| bool | replace(const Key &key, const QPixmap &pixmap) |
| void | setCacheLimit(int n) |
Подробное описание
Класс QPixmapCache предоставляет кэш пиктограмм на уровне всего приложения.
Этот класс является инструментом для оптимизированного рисования с помощью QPixmap. Вы можете использовать его для хранения временных пиктограмм, которые дорого обходятся при генерации, не используя больше места для хранения, чем cacheLimit. Используйте insert() для вставки пиктограмм, find() для поиска и clear() для очистки кэша.
QPixmapCache не содержит данных членов, а только статические функции для доступа к глобальному кэшу пиктограмм. Он создает внутренний объект QCache для кэширования пиктограмм.
Кэш сопоставляет пиктограмму с предоставленной пользователем строкой в качестве ключа или с QPixmapCache::Key, который генерирует кэш. Использование QPixmapCache::Key в качестве ключей быстрее, чем использование строк. Строковый API очень удобен для сложных ключей, но API QPixmapCache::Key будет очень эффективным и удобным для однозначного сопоставления объекта с пиктограммой — в этом случае вы можете хранить ключи как члены объекта.
Если две пиктограммы вставляются в кэш с равными ключами, то последняя пиктограмма заменит первую пиктограмму в кэше. Это соответствует поведению классов QHash и QCache.
Кэш заполняется, когда общий размер всех пиктограмм в кэше превышает cacheLimit. Начальный предел кэша составляет 10240 КБ (10 МБ); вы можете изменить его, вызвав setCacheLimit() с необходимым значением. Пиктограмма занимает примерно (width * height * depth)/8 байт памяти.
Статья из Qt Quarterly Optimizing with QPixmapCache описывает, как использовать QPixmapCache для ускорения приложений путём кэширования результатов рисования.
Документация по функциям-членам
[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 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] 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 Key &key)
Удаляет пиктограмму, связанную с key, из кэша и освобождает ключ для будущей вставки.
Эта функция была добавлена в Qt 4.6.
[static] bool QPixmapCache::replace(const 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.9/qpixmapcache.html