QPixmapCache Class
QPixmapCache 클래스는 픽셀맵을 위한 애플리케이션 전체 캐시를 제공합니다. 더 보기...
헤더: | #include <QPixmapCache> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
공용 타입
class | Key |
정적 공용 멤버
int | cacheLimit() |
void | clear() |
bool | find(const QPixmapCache::Key &key, QPixmap *pixmap) |
bool | find(const QString &key, QPixmap *pixmap) |
QPixmapCache::Key | insert(const QPixmap &pixmap) |
bool | insert(const QString &key, const QPixmap &pixmap) |
void | remove(const QPixmapCache::Key &key) |
void | remove(const QString &key) |
void | setCacheLimit(int n) |
상세 설명
QPixmap이 클래스는 cacheLimit()보다 더 많은 저장 공간을 사용하지 않고 생성 비용이 많이 드는 임시 픽셀맵을 저장하는 데 사용할 수 있는 최적화된 그리기 도구입니다. 픽스맵을 삽입하려면 insert(), 찾으려면 find(), 캐시를 비우려면 clear()를 사용합니다.
QPixmapCache에는 멤버 데이터가 없고 전역 픽셀맵 캐시에 액세스하는 정적 함수만 포함되어 있습니다. 이 함수는 픽셀맵 캐시를 위한 내부 QCache 객체를 생성합니다.
이 캐시는 사용자가 제공한 문자열을 키로 사용하거나 캐시가 생성하는 QPixmapCache::Key 에 픽스맵을 연결합니다. 키에 QPixmapCache::Key 을 사용하는 것이 문자열을 사용하는 것보다 빠릅니다. 문자열 API는 복잡한 키에 매우 편리하지만 QPixmapCache::Key API는 일대일 객체-픽스맵 매핑(이 경우 키를 객체의 멤버로 저장할 수 있음)에 매우 효율적이고 편리합니다.
동일한 키를 사용하여 두 개의 픽셀맵이 캐시에 삽입되면 마지막 픽셀맵이 캐시의 첫 번째 픽셀맵을 대체합니다. 이는 QHash 및 QCache 클래스의 동작을 따릅니다.
캐시에 있는 모든 픽셀맵의 총 크기가 cacheLimit()를 초과하면 캐시가 가득 차게 됩니다. 초기 캐시 제한은 10240KB(10MB)이며, 필요한 값으로 setCacheLimit()를 호출하여 변경할 수 있습니다. 픽셀맵은 대략(너비 * 높이 * 깊이)/8 바이트의 메모리를 차지합니다.
Qt 분기별 기사 QPixmapCache로 최적화하기에서 QPixmapCache를 사용하여 페인팅 결과를 캐싱하여 애플리케이션의 속도를 높이는 방법을 설명합니다.
참고: QPixmapCache는 애플리케이션의 메인 스레드에서만 사용할 수 있습니다. 다른 스레드에서의 액세스는 무시되고 실패를 반환합니다.
멤버 함수 문서
[static]
int QPixmapCache::cacheLimit()
캐시 한도(킬로바이트)를 반환합니다.
기본 캐시 제한은 10240KB입니다.
setCacheLimit()도 참조하세요 .
[static]
void QPixmapCache::clear()
캐시에서 모든 픽스맵을 제거합니다.
[static]
bool QPixmapCache::find(const QPixmapCache::Key &key, QPixmap *pixmap)
캐시에서 주어진 key 과 연관된 캐시된 픽셀맵을 찾습니다. 픽셀맵이 발견되면 pixmap 을 해당 픽셀맵으로 설정하고 true
을 반환하고, 그렇지 않으면 pixmap 을 그대로 두고 false
을 반환합니다. 픽셀맵을 찾지 못하면 key 이 더 이상 유효하지 않으므로 다음 삽입을 위해 해제됩니다.
[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);
[static]
QPixmapCache::Key QPixmapCache::insert(const QPixmap &pixmap)
주어진 pixmap 의 복사본을 캐시에 삽입하고 이를 검색하는 데 사용할 수 있는 키를 반환합니다.
픽셀맵이 삽입되고 캐시가 한도를 초과하려고 하면 픽셀맵을 삽입할 공간이 충분해질 때까지 픽셀맵을 제거합니다.
더 많은 공간이 필요하면 가장 오래된 픽셀맵(캐시에서 가장 최근에 액세스한 픽셀맵)이 삭제됩니다.
setCacheLimit() 및 replace()도 참조하세요 .
[static]
bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)
key 에 연결된 pixmap pixmap 의 복사본을 캐시에 삽입합니다.
Qt 라이브러리에 의해 삽입된 모든 픽스맵은 "$qt"로 시작하는 키를 가지므로 자신의 픽스맵 키는 "$qt"로 시작하면 안 됩니다.
픽셀맵이 삽입되고 캐시가 한계를 초과하려고 하면 픽셀맵을 삽입할 공간이 충분해질 때까지 픽셀맵을 제거합니다.
더 많은 공간이 필요하면 가장 오래된 픽셀맵(캐시에서 가장 최근에 액세스한 픽셀맵)이 삭제됩니다.
이 함수는 객체가 캐시에 삽입된 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
setCacheLimit()도 참조하세요 .
[static]
void QPixmapCache::remove(const QPixmapCache::Key &key)
캐시에서 key 에 연결된 픽스맵을 제거하고 나중에 삽입할 수 있도록 키를 해제합니다.
[static]
void QPixmapCache::remove(const QString &key)
캐시에서 key 와 연결된 픽스맵을 제거합니다.
[static]
void QPixmapCache::setCacheLimit(int n)
캐시 제한을 n 킬로바이트로 설정합니다.
기본 설정은 10240KB입니다.
cacheLimit()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.