Spec-Zone.ru › Qt 5.15

Класс QPixmapCache

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

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

Открытые типы

класс Ключ

Статические открытые члены

int cacheLimit()
void clear()
bool find(const QString &ключ, QPixmap *пиктограмма)
bool find(const QPixmapCache::Ключ &ключ, QPixmap *пиктограмма)
bool insert(const QString &ключ, const QPixmap &пиктограмма)
QPixmapCache::Ключ insert(const QPixmap &пиктограмма)
void remove(const QString &ключ)
void remove(const QPixmapCache::Ключ &ключ)
bool replace(const QPixmapCache::Ключ &ключ, const QPixmap &пиктограмма)
void setCacheLimit(int n)

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

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

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

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

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

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

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

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

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

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

[static] int QPixmapCache::cacheLimit()

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

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

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

[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);

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

[static] bool QPixmapCache::find(const QPixmapCache::Ключ &ключ, QPixmap *пиктограмма)

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

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

[static] bool QPixmapCache::insert(const QString &ключ, const QPixmap &пиктограмма)

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

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

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

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

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

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

[static] QPixmapCache::Ключ QPixmapCache::insert(const QPixmap &пиктограмма)

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

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

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

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

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

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

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

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

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

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

[static] bool QPixmapCache::replace(const QPixmapCache::Ключ &ключ, const QPixmap &пиктограмма)

Заменяет пиктограмму, связанную с заданным ключом, на указанную пиктограмму. Возвращает true если пиктограмма была успешно вставлена в кэш; в противном случае возвращает 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.15/qpixmapcache.html

Spec-Zone.ru

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