QPixmapCache Class
La clase QPixmapCache proporciona una caché de pixmaps para toda la aplicación. Más...
| Cabecera: | #include <QPixmapCache> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Tipos públicos
| class | Key |
Miembros públicos estáticos
| 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) |
Descripción detallada
Esta clase es una herramienta para el dibujo optimizado con QPixmap. Puede utilizarla para almacenar pixmaps temporales que son caros de generar sin utilizar más espacio de almacenamiento que cacheLimit(). Utilice insert() para insertar pixmaps, find() para encontrarlos, y clear() para vaciar la caché.
QPixmapCache no contiene datos miembros, sólo funciones estáticas para acceder a la caché global de pixmaps. Crea un objeto interno QCache para almacenar en caché los pixmaps.
La caché asocia un mapa de píxeles con una cadena proporcionada por el usuario como clave, o con un QPixmapCache::Key que la caché genera. Utilizar QPixmapCache::Key para las claves es más rápido que utilizar cadenas. La API de cadenas es muy conveniente para claves complejas, pero la API QPixmapCache::Key será muy eficiente y conveniente para un mapeo objeto-a-pixmap de uno-a-uno - en este caso, puedes almacenar las claves como miembros de un objeto.
Si se insertan dos mapas de píxeles en la caché utilizando claves iguales, el último mapa de píxeles sustituirá al primero en la caché. Esto sigue el comportamiento de las clases QHash y QCache.
La caché se llena cuando el tamaño total de todos los mapas de píxeles de la caché supera cacheLimit(). El límite inicial de la caché es de 10240 KB (10 MB); puedes cambiarlo llamando a setCacheLimit() con el valor requerido. Un mapa de píxeles ocupa aproximadamente(anchura * altura * profundidad)/8 bytes de memoria.
El artículo de Qt Quarterly Optimizing with QPixmapCache explica cómo usar QPixmapCache para acelerar las aplicaciones almacenando en caché los resultados del pintado.
Nota: QPixmapCache sólo es utilizable desde el hilo principal de la aplicación. El acceso desde otros hilos será ignorado y devolverá un fallo.
Documentación de las funciones miembro
[static] int QPixmapCache::cacheLimit()
Devuelve el límite de la caché (en kilobytes).
El límite de caché por defecto es 10240 KB.
Véase también setCacheLimit().
[static] void QPixmapCache::clear()
Elimina todos los mapas de píxeles de la caché.
[static] bool QPixmapCache::find(const QPixmapCache::Key &key, QPixmap *pixmap)
Busca en la caché un mapa de píxeles asociado al key dado. Si se encuentra el mapa de píxeles, la función establece pixmap a ese mapa de píxeles y devuelve true; de lo contrario, deja pixmap solo y devuelve false. Si no se encuentra el pixmap, significa que key ya no es válido, por lo que se liberará para la siguiente inserción.
[static] bool QPixmapCache::find(const QString &key, QPixmap *pixmap)
Busca en la caché un mapa de píxeles asociado al key dado. Si se encuentra el mapa de píxeles, la función establece pixmap en ese mapa de píxeles y devuelve true; de lo contrario, deja pixmap y devuelve false.
Ejemplo:
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)
Inserta una copia del pixmap dado en la caché y devuelve una clave que puede utilizarse para recuperarlo.
Cuando se inserta un mapa de píxeles y la caché está a punto de superar su límite, elimina mapas de píxeles hasta que haya espacio suficiente para insertar el mapa de píxeles.
Los pixmaps más antiguos (a los que se ha accedido menos recientemente en la caché) se eliminan cuando se necesita más espacio.
Véase también setCacheLimit().
[static] bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)
Inserta en la caché una copia del mapa de píxeles pixmap asociado a key.
Todos los pixmaps insertados por la librería Qt tienen una clave que empieza por "$qt", por lo que tus propias claves de pixmap nunca deben empezar por "$qt".
Cuando se inserta un mapa de píxeles y la caché está a punto de sobrepasar su límite, elimina mapas de píxeles hasta que haya espacio suficiente para insertar el mapa de píxeles.
Los pixmaps más antiguos (a los que se ha accedido menos recientemente en la caché) se eliminan cuando se necesita más espacio.
La función devuelve true si el objeto se ha insertado en la caché; en caso contrario, devuelve false.
Véase también setCacheLimit().
[static] void QPixmapCache::remove(const QPixmapCache::Key &key)
Elimina de la caché el mapa de píxeles asociado a key y libera la clave para una futura inserción.
[static] void QPixmapCache::remove(const QString &key)
Elimina de la caché el mapa de píxeles asociado a key.
[static] void QPixmapCache::setCacheLimit(int n)
Establece el límite de la caché en n kilobytes.
El valor por defecto es 10240 KB.
Véase también cacheLimit().
© 2026 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.