Qt 4.6に関する連載の最終回は,グラフィックスイフェクトについての説明です。地味な機能ですが,気の利いたユーザインターフェースを作るのに便利な機能です。
グラフィックスイフェクトを用いたサンプル
Qtのインストール先のexamples/effectsにグラフィックスイフェクトを用いたサンプルが3つ用意されています。
アプリケーションピッカーでは,アプリケーションのアイコンを輪状に表示させ,矢印キー操作でアイコンを回転させています。奥にあるアイコンほどぼかしがかかったようにして,カレントのアイコンをわかりやすく見せるようにしています。
アプリケーションピッカー
イフェクト付きポップアップメッセージでは,メッセージが表示されるときには,背景をアニメーションをかけながら緑色に色づけをして,メッセージが目立つようにしています。
イフェクト付きポップアップメッセージ
ライティングとシャドーでは,回転する光源が作る影をアニメーションで表示しています。
ライティングとシャドー
グラフィックスイフェクトのクラス
図1は,グラフィックスイフェクトに用意されているクラスです。主要なクラスの機能概要は,表1のようになります。
表1 グラフィックスイフェクトのクラス名と機能の概要
| クラス名 | 機能概要 |
|---|---|
| QGraphicsEffect | グラフィックスイフェクト機能の純粋仮想クラス。 |
| QGraphicsBlurEffect | ぼかし効果用グラフィックスイフェクト |
| QGraphicsColorizeEffect | 色付け効果用グラフィックスイフェクト |
| QGraphicsDropShadowEffect | 影付け効果用グラフィックスイフェクト |
| QGraphicsOpacityEffect | 半透明効果用グラフィックスイフェクト |
グラフィックスイフェクトは,上表にあるように,ぼかし,色付け,影付け,半透明化などの効果をグラフィックスアイテム(QGraphicsItem)とウィジェット(QWidget)に付加する機能です。つまり,通常の描画にこれらを適用して,その結果が表示されます。
グラフィックスイフェクトの使い方は以下の2ステップです。使い方はとても簡単で,うまく使えばよいインターフェースを作れます。
①グラフィックスイフェクトのインスタンスを生成し,必要に応じてプロパティを設定する。
グラフィックスイフェクトに関連する主なプロパティは表2の通りです。
表2 グラフィックスイフェクト関連のプロパティ
| グラフィックスイフェクト | プロパティ | 説明 |
| QGraphicsBlurEffect | blurRadius: qreal | ぼかし半径。デフォルトは5ピクセル。 |
| QGraphicsColorizeEffect | color: QColor | 色付けの色。デフォルトはQColor(0, 0, 192)。 |
| strength: qreal | イフェクトの強度。1.0で完全着色,0.0で無着色。デフォルトは1.0。 | |
| QGraphicsDropShadowEffect | blurRadius: qreal | 影のぼかし半径。デフォルトは1ピクセル。 |
| color: QColor | 影の色。デフォルトはQColor(63, 63, 63, 180)。 | |
| QGraphicsOpacityEffect | opacity: qreal | 不透明度。デフォルトは0.7。 |
②グラフィックスアイテムかウィジェットにグラフィックスイフェクトを設定する。
以下のメソッドを用います。設定したグラフィックスイフェクトのオーナーは,設定先のオブジェクトになります。
QGraphicsItem::setGraphicsEffect( QGraphicsEffect* effect );
QWidget::setGraphicsEffect( QGraphicsEffect* effect );
これらのメソッドでの設定後にグラフィックスイフェクトのプロパティの変更をすれば,表示にすぐに適用されます。また,enabled プロパフィで,グラフィックスイフェクトを設定したままで,有効無効を切替えられます。
今回紹介するアニメーションプログラムのソースリストはこちらからダウンロードしてください。

