QPixmapCache Class
Die Klasse „QPixmapCache“ stellt einen anwendungsweiten Cache für Pixmaps bereit. Mehr...
| Header: | #include <QPixmapCache> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Öffentliche Typen
| class | Key |
Statische öffentliche Mitglieder
| 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) |
Ausführliche Beschreibung
Diese Klasse ist ein Werkzeug für optimiertes Zeichnen mit QPixmap. Sie können damit temporäre Pixmaps speichern, deren Erstellung rechenintensiv ist, ohne dabei mehr Speicherplatz zu beanspruchen als cacheLimit(). Verwenden Sie insert() zum Einfügen von Pixmaps, find() zum Auffinden und clear() zum Leeren des Caches.
QPixmapCache enthält keine Mitgliedsdaten, sondern nur statische Funktionen für den Zugriff auf den globalen Pixmap-Cache. Es erstellt ein internes QCache -Objekt zum Zwischenspeichern der Pixmaps.
Der Cache verknüpft eine Pixmap mit einer vom Benutzer bereitgestellten Zeichenkette als Schlüssel oder mit einem „ QPixmapCache::Key “, das der Cache generiert. Die Verwendung von „ QPixmapCache::Key “ als Schlüssel ist schneller als die Verwendung von Zeichenketten. Die String-API ist sehr praktisch für komplexe Schlüssel, aber die „ QPixmapCache::Key “-API ist sehr effizient und praktisch für eine Eins-zu-Eins-Zuordnung von Objekten zu Pixmaps – in diesem Fall können Sie die Schlüssel als Mitglieder eines Objekts speichern.
Werden zwei Pixmaps mit identischen Schlüsseln in den Cache eingefügt, ersetzt die zuletzt eingefügte Pixmap die erste Pixmap im Cache. Dies entspricht dem Verhalten der Klassen „ QHash “ und „ QCache “.
Der Cache ist voll, wenn die Gesamtgröße aller Pixmaps im Cache den Wert von ` cacheLimit()` überschreitet. Die anfängliche Cache-Obergrenze beträgt 10240 KB (10 MB); Sie können diesen Wert ändern, indem Sie ` setCacheLimit()` mit dem gewünschten Wert aufrufen. Eine Pixmap belegt etwa (Breite * Höhe * Tiefe)/8 Byte Speicherplatz.
Der Artikel „Optimizing with QPixmapCache“ im Qt Quarterly erklärt, wie man QPixmapCache einsetzt, um Anwendungen durch das Zwischenspeichern der Zeichen-Ergebnisse zu beschleunigen.
Hinweis: QPixmapCache kann nur vom Hauptthread der Anwendung aus verwendet werden. Zugriffe aus anderen Threads werden ignoriert und führen zu einem Fehler.
Siehe auch QCache und QPixmap.
Dokumentation zu den Member-Funktionen
[static] int QPixmapCache::cacheLimit()
Gibt die Cache-Obergrenze (in Kilobyte) zurück.
Die Standardgröße des Caches beträgt 10240 KB.
Siehe auch ` setCacheLimit()`.
[static] void QPixmapCache::clear()
Entfernt alle Pixmaps aus dem Cache.
[static] bool QPixmapCache::find(const QPixmapCache::Key &key, QPixmap *pixmap)
Sucht im Cache nach einer zwischengespeicherten Pixmap, die mit dem angegebenen ` key ` verknüpft ist. Wird die Pixmap gefunden, setzt die Funktion ` pixmap ` auf diese Pixmap und gibt ` true` zurück; andernfalls bleibt ` pixmap ` unverändert und es wird ` false` zurückgegeben. Wird die Pixmap nicht gefunden, bedeutet dies, dass der ` key ` nicht mehr gültig ist, sodass er für den nächsten Eintrag freigegeben wird.
[static] bool QPixmapCache::find(const QString &key, QPixmap *pixmap)
Sucht im Cache nach einer zwischengespeicherten Pixmap, die mit dem angegebenen ` key ` verknüpft ist. Wird die Pixmap gefunden, setzt die Funktion ` pixmap ` auf diese Pixmap und gibt ` true` zurück; andernfalls bleibt ` pixmap ` unverändert und es wird ` false` zurückgegeben.
Beispiel:
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)
Fügt eine Kopie der angegebenen „ pixmap “ in den Cache ein und gibt einen Schlüssel zurück, mit dem sie abgerufen werden kann.
Wenn eine Pixmap eingefügt wird und der Cache kurz davor ist, seine Kapazitätsgrenze zu überschreiten, werden Pixmaps entfernt, bis genügend Platz für die einzufügende Pixmap vorhanden ist.
Die ältesten Pixmaps (die zuletzt im Cache aufgerufen wurden) werden gelöscht, wenn mehr Speicherplatz benötigt wird.
Siehe auch setCacheLimit().
[static] bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)
pixmap Fügt eine Kopie der mit key verknüpften Pixmap „ “ in den Cache ein.
Alle von der Qt-Bibliothek eingefügten Pixmaps haben einen Schlüssel, der mit „$qt“ beginnt; daher sollten Ihre eigenen Pixmap-Schlüssel niemals mit „$qt“ beginnen.
Wenn eine Pixmap eingefügt wird und der Cache kurz davor ist, seine Kapazitätsgrenze zu überschreiten, werden Pixmaps entfernt, bis genügend Platz für die einzufügende Pixmap vorhanden ist.
Die ältesten Pixmaps (die zuletzt im Cache aufgerufen wurden) werden gelöscht, wenn mehr Speicherplatz benötigt wird.
Die Funktion gibt „ true “ zurück, wenn das Objekt in den Cache eingefügt wurde; andernfalls gibt sie „ false “ zurück.
Siehe auch ` setCacheLimit()`.
[static] void QPixmapCache::remove(const QPixmapCache::Key &key)
Entfernt die mit „ key “ verknüpfte Pixmap aus dem Cache und gibt den Schlüssel für ein zukünftiges Einfügen frei.
[static] void QPixmapCache::remove(const QString &key)
Entfernt die mit „ key “ verknüpfte Pixmap aus dem Cache.
[static] void QPixmapCache::setCacheLimit(int n)
Legt die Cache-Obergrenze auf n Kilobyte fest.
Die Standardeinstellung beträgt 10240 KB.
Siehe auch ` 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.