En esta página

QCache Class

template <typename Key, typename T> class QCache

La clase QCache es una clase de plantilla que proporciona una caché. Más...

Cabecera: #include <QCache>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

QCache(qsizetype maxCost = 100)
~QCache()
void clear()
bool contains(const Key &key) const
qsizetype count() const
bool insert(const Key &key, T *object, qsizetype cost = 1)
bool isEmpty() const
QList<Key> keys() const
qsizetype maxCost() const
T *object(const Key &key) const
bool remove(const Key &key)
void setMaxCost(qsizetype cost)
qsizetype size() const
T *take(const Key &key)
qsizetype totalCost() const
T *operator[](const Key &key) const

Descripción Detallada

QCache<Key, T> define una caché que almacena objetos de tipo T asociados a claves de tipo Key. Por ejemplo, esta es la definición de una caché que almacena objetos de tipo Empleado asociados a una clave entera:

QCache<int, Employee> cache;

Así es como se inserta un objeto en la caché:

Employee *employee = new Employee;
employee->setId(37);
employee->setName("Richard Schmit");
//...
cache.insert(employee->id(), employee);

La ventaja de utilizar QCache sobre alguna otra estructura de datos basada en claves (como QMap o QHash) es que QCache se apropia automáticamente de los objetos que se insertan en la caché y los borra para dejar espacio a nuevos objetos, si es necesario. Cuando se inserta un objeto en la caché, se puede especificar un coste, que debe tener alguna relación aproximada con la cantidad de memoria ocupada por el objeto. Cuando la suma de los costes de todos los objetos (totalCost()) supera el límite de la caché (maxCost()), QCache empieza a eliminar objetos de la caché para mantenerlos por debajo del límite, empezando por los objetos a los que se ha accedido menos recientemente.

Por defecto, maxCost() de QCache es 100. Se puede especificar un valor diferente en el constructor de QCache:

QCache<int, MyDataStructure> cache(5000);

Cada vez que llames a insert(), puedes especificar un coste como tercer argumento (después de la clave y un puntero al objeto a insertar). Después de la llamada, el objeto insertado es propiedad de QCache, que puede borrarlo en cualquier momento para hacer sitio a otros objetos.

Para buscar objetos en la caché, utilice object() u operador[](). Esta función busca un objeto por su clave y devuelve un puntero al objeto almacenado (que es propiedad de la caché) o nullptr.

Si desea eliminar un objeto de la caché para una clave determinada, llame a remove(). Esto también eliminará el objeto. Si quieres eliminar un objeto de la caché sin que QCache lo borre, utiliza take().

Véase también QPixmapCache, QHash, y QMap.

Documentación de las funciones miembro

[explicit noexcept] QCache::QCache(qsizetype maxCost = 100)

Construye una caché cuyo contenido nunca tendrá un coste total superior a maxCost.

QCache::~QCache()

Destruye la caché. Elimina todos los objetos de la caché.

[noexcept(...)] void QCache::clear()

Borra todos los objetos de la caché.

Nota: Esta función es noexcept cuando std::is_nothrow_destructible_v<Node> es true.

Véase también remove() y take().

[noexcept] bool QCache::contains(const Key &key) const

Devuelve true si la caché contiene un objeto asociado a la clave key; en caso contrario devuelve false.

Véase también take() y remove().

[noexcept] qsizetype QCache::count() const

Igual que size().

bool QCache::insert(const Key &key, T *object, qsizetype cost = 1)

Inserta object en la caché con la clave key y el coste asociado cost. Cualquier objeto con la misma clave que ya esté en la caché será eliminado.

Después de esta llamada, object es propiedad de QCache y puede ser eliminado en cualquier momento. En particular, si cost es mayor que maxCost(), el objeto se eliminará inmediatamente.

La función devuelve true si el objeto se insertó en la caché; en caso contrario, devuelve false.

Véase también take() y remove().

[noexcept] bool QCache::isEmpty() const

Devuelve true si la caché no contiene objetos; en caso contrario devuelve false.

Véase también size().

QList<Key> QCache::keys() const

Devuelve una lista de las claves de la caché.

[noexcept] qsizetype QCache::maxCost() const

Devuelve el coste total máximo permitido de la caché.

Véase también setMaxCost() y totalCost().

[noexcept] T *QCache::object(const Key &key) const

Devuelve el objeto asociado a la clave key, o nullptr si la clave no existe en la caché.

Advertencia: El objeto devuelto es propiedad de QCache y puede ser eliminado en cualquier momento.

Véase también take() y remove().

[noexcept(...)] bool QCache::remove(const Key &key)

Elimina el objeto asociado a la clave key. Devuelve true si el objeto se encontró en la caché; en caso contrario devuelve false.

Nota: Esta función es noexcept cuando std::is_nothrow_destructible_v<Node> es true.

Véase también take() y clear().

[noexcept(...)] void QCache::setMaxCost(qsizetype cost)

Establece el coste total máximo permitido de la caché en cost. Si el coste total actual es superior a cost, algunos objetos se eliminan inmediatamente.

Nota: Esta función es noexcept cuando std::is_nothrow_destructible_v<Node> es true.

Véase también maxCost() y totalCost().

[noexcept] qsizetype QCache::size() const

Devuelve el número de objetos en la caché.

Véase también isEmpty().

[noexcept(...)] T *QCache::take(const Key &key)

Saca de la caché el objeto asociado a la clave key sin borrarlo. Devuelve un puntero al objeto extraído, o 0 si la clave no existe en la caché.

La propiedad del objeto devuelto se pasa al llamante.

Nota: Esta función es noexcept cuando std::is_nothrow_destructible_v<Key> es true.

Véase también remove().

[noexcept] qsizetype QCache::totalCost() const

Devuelve el coste total de los objetos de la caché.

Este valor es normalmente inferior a maxCost(), pero QCache hace una excepción para las clases implícitamente compartidas de Qt. Si un objeto en caché comparte sus datos internos con otra instancia, QCache puede mantener el objeto por ahí, contribuyendo posiblemente a que totalCost() sea mayor que maxCost().

Véase también setMaxCost().

[noexcept] T *QCache::operator[](const Key &key) const

Devuelve el objeto asociado a la clave key, o nullptr si la clave no existe en la caché.

Es lo mismo que object().

Advertencia: El objeto devuelto pertenece a QCache y puede ser eliminado en cualquier momento.

© 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.