QPixmapCache Class

QPixmapCache クラスは、アプリケーション全体の pixmap キャッシュを提供します。詳細...

ヘッダ #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() よりも多くの記憶領域を使用することなく、生成にコストのかかる一時的な pixmap を保存するために使用できます。ピクスマップを挿入するにはinsert() を、ピクスマップを検索するにはfind() を、キャッシュを空にするにはclear() を使用します。

QPixmapCache にはメンバ・データはなく、グローバルな pixmap キャッシュにアクセスするための静的関数だけが含まれています。QPixmapCache は、pixmap をキャッシュするための内部QCache オブジェクトを作成します。

キャッシュは、pixmap を、ユーザが提供する文字列をキーとして、またはキャッシュが生成するQPixmapCache::Key と関連付けます。キーにQPixmapCache::Key を使用すると、文字列を使用するよりも高速です。文字列 API は複雑なキーに対して非常に便利ですが、QPixmapCache::Key API は、オブジェクトとピクセ スマップの 1 対 1 のマッピングに対して非常に効率的で便利です。

2つのpixmapが同じキーを使ってキャッシュに挿入された場合、最後のpixmapがキャッシュ内の最初のpixmapを置き換えます。これは、QHash およびQCache クラスの動作に従います。

キャッシュ内のすべての pixmap の合計サイズがcacheLimit() を超えると、キャッシュが一杯になります。最初のキャッシュの上限は 10240 KB(10 MB)です。必要な値を指定してsetCacheLimit() を呼び出すことで、この上限を変更できます。pixmapは、およそ(width*height*depth)/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 をキャッシュから探します。pixmapが見つかれば、pixmap をそのpixmapに設定し、true を返す。そうでなければ、pixmap をそのままにして、false を返す。pixmapが見つからなかった場合、key はもう無効であることを意味するので、次の挿入のために解放される。

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

与えられたkey に関連付けられたキャッシュされた pixmap をキャッシュから探します。見つかった場合は、pixmap をその 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 のコピーをキャッシュに挿入し、それを取得するために使用できるキーを返します。

pixmapが挿入され、キャッシュが限界を超えそうになると、pixmapを挿入するための十分なスペースが確保されるまで、pixmapを削除します。

容量が必要になると、最も古い pixmap(キャッシュ内で最も最近アクセスされたもの)が削除される。

setCacheLimit() およびreplace()も参照

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

key に関連付けられた pixmappixmap のコピーをキャッシュに挿入します。

Qtライブラリによって挿入されるすべてのpixmapのキーは"$qt "で始まるので、独自のpixmapのキーは決して"$qt "で始まってはいけません。

pixmapが挿入され、キャッシュが限界を超えそうになると、pixmapを挿入するための十分なスペースが確保されるまで、pixmapが削除されます。

容量が必要になると、最も古い pixmap(キャッシュ内で最も最近アクセスされたもの)が削除される。

この関数は、オブジェクトがキャッシュに挿入された場合はtrue を返し、そうでない場合はfalse を返します。

setCacheLimit()も参照してください

[static] void QPixmapCache::remove(const QPixmapCache::Key &key)

key に関連付け られている pixmap をキ ャ ッ シ ュ か ら 削除 し 、 将来挿入 さ れ る キーを解放 し ます。

[static] void QPixmapCache::remove(const QString &key)

key に関連付けられた pixmap をキャッシュから削除します。

[static] void QPixmapCache::setCacheLimit(int n)

キャッシュの上限をn KB に設定する。

デフォルトは 10240 KB。

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.