QPixmapCache Class

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

Header: #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()

キャッシュからすべての pixmap を削除します。

[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 をその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が挿入され、キャッシュの上限を超えそうになると、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()も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。