このページでは

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 はオブジェクトとピクマップの 1 対 1 のマッピングにおいて非常に効率的で便利です。この場合、キーをオブジェクトのメンバとして格納することができます。

同一のキーを使用して 2 つのピクマップがキャッシュに挿入された場合、最後のピクマップがキャッシュ内の最初のピクマップに置き換わります。これは、QHash およびQCache クラスの動作に従います。

キャッシュ内のすべてのピクマップの合計サイズがcacheLimit() を超える場合、キャッシュは満杯となります。初期のキャッシュ制限は 10240 KB (10 MB) ですが、setCacheLimit() を呼び出し、必要な値を指定することで変更できます。1 つのピクマップが占有するメモリ容量は、おおよそ (幅*高さ*深度)/8 バイトです。

『Qt Quarterly』の記事「Optimizing with QPixmapCache」では、QPixmapCache を使用して描画結果をキャッシュし、アプリケーションの処理を高速化する方法について解説しています。

注:QPixmapCacheは 、アプリケーションのメインスレッドからのみ使用可能です。他のスレッドからのアクセスは無視され、失敗が返されます。

関連項目: QCache およびQPixmap 。

メンバ関数のドキュメント

[static] int QPixmapCache::cacheLimit()

キャッシュの上限(キロバイト単位)を返します。

キャッシュの上限のデフォルト値は 10240 KB です。

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()も参照してください 。

[static] bool QPixmapCache::insert(const QString &key, const QPixmap &pixmap)

key に関連付けられたピクマップ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 キロバイトに設定します。

デフォルト設定は 10240 KB です。

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.