Spec-Zone.ru › Qt 5.11

Класс 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 строк очень удобен для сложных ключей, но API QPixmapCache::Key будет очень эффективным и удобным для однозначного сопоставления объекта и пиктограммы — в этом случае вы можете хранить ключи как члены объекта.

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

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

Статья Optimizing with QPixmapCache в журнале Qt Quarterly описывает, как использовать 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/archives/qt-5.11/qpixmapcache.html

Spec-Zone.ru

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