Spec-Zone.ru › Qt 6.1

Класс QPixmapCache

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

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

Типы public

класс Ключ

Статические public-члены

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

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

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

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

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

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

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

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

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

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

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

[static] int QPixmapCache::предел_кэша()

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

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

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

[static] void QPixmapCache::очистить()

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

[static] bool QPixmapCache::найти(const QString &ключ, QPixmap *pixmap)

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

[static] bool QPixmapCache::найти(const QPixmapCache::Ключ &ключ, QPixmap *pixmap)

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

[static] bool QPixmapCache::вставить(const QString &ключ, const QPixmap &pixmap)

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

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

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

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

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

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

[static] QPixmapCache::Ключ QPixmapCache::вставить(const QPixmap &pixmap)

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

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

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

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

[static] void QPixmapCache::удалить(const QString &ключ)

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

[static] void QPixmapCache::удалить(const QPixmapCache::Ключ &ключ)

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

[static] bool QPixmapCache::заменить(const QPixmapCache::Ключ &ключ, const QPixmap &pixmap)

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

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

[static] void QPixmapCache::установитьПределКэша(int n)

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

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

См. также предел_кэша().

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

Spec-Zone.ru

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