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はアプリケーションのメインスレッドからのみ使用できます。他のスレッドからのアクセスは無視され、失敗を返します。
メンバ関数ドキュメント
[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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。