2009年12月1日にQt 4.6がリリースされました。今回は,Qt 4.6の新機能の概要と今後のロードマップについて説明し,Qtがどのようになっていくかを見てみましょう。そして,Qt 4.6の最も大きな機能追加と言える,ダイナミックで動きのあるGUIを可能にするアニメーションフレーワークについて,回を改めて詳しく説明します。
新しく追加されたプラットフォーム
Qt 4.6: Supported Platforms にあるように,Qt 4.5からサポートプラットフォームが3段階にランク付けされています。
最もレベルの高いTier 1にSymbian S60が新たに追加され,次のレベルであるTier 2に,Windows 7とMac OS X 10.6(Snow Leopard)が追加されています。最もレベルの低いTier 3は,Nokiaのサポート対象外ですが,QNXとVxWorksが追加されています。以前からX11ベースのQNX向けQtがありましたが,さらにX11を使わないQWS(Qt Window System)ベースのQNX対応版が追加されています。VxWorks は,X11 が必要です。
Qt 4.7では,現在Technical PreviewのMaemoが正式に加わるでしょう。また,Windows 7とMac OS X 10.6がTier 1になり,WindowsのVisual Studio 2010版がTier 2に加わる予定です。逆にサポートレベルが下がったり廃止されるものもあります。Mac OS XのCarbonはTier 2に下がり,WindowsのMinGW 3.4とVisual Studio 2003,HP-UXのPA-RISC,Windows Mobile 5の各プラットフォームがなくなり,OpenGL ES Common Liteのサポートもなくなります。
アニメーションフレームワーク
アニメーションフレームワークは,大まかに4つの機能で構成されています。
アニメーションAPI
Qtのプロパティを動的に変更することによって,動きのあるGUIを作る機能です。ステートとトランジションと合わせて使えるようになっていて,以下のような特徴があります。
- どのQObjectのプロパティでもアニメーション可能
- アニメーションを結合してグループ化
- イージングカーブを使用可能
たとえば,位置や大きさなどのプロパティを動的に変えることで,ボタンの配置などを動きのあるものにできます。イージングカーブを適用すれば,落ちて弾むような動きをさせられます。
ステートとトランジション
Qtのシグナルとスロットと融合させて,ハレルのステートチャートとSCXML(State Chart XML)を完全に実装していて,以下のような特徴があります。
- アプリケーションの動作の意味付けを簡明化
- 動作の形式化による保守性の向上
- イベントドリブンプログラミングの強化
- アプリケーションロジックの記述の検証可能化
ネストしたステートもきちんと実装されているので,本格的なステートとトランジションによるプログラミングが可能です。
グラフィックスエフェクト
What's New in Qt 4.6のページにあるように,ぼかし,影,色付け,透明度などのグラフィカルなエフェクトを,QGraphicsItem や QWidgetに適用して,ユーザインターフェースを視覚的に際立たせたり,強調させたりできます。以下のような特徴があります。
- 任意のペイントデバイスにエフェクトを適用可能
- 前述のようなよく使われるエフェクトはビルトイン済
- 独自のエフェクトを追加拡張可能
宣言的UI
宣言的UIの目的は,ユーザインターフェースをデザインするグラフィカルデザイナーとプログラマが共同で開発する際に,JavaScriptベースのQML言語を介して,両者の垣根を取り払って,協力して開発を進めやすくすることです。
宣言的UIで記述したアプリケーションの動画がYouTubeにいくつもあります。どのようなGUIが作れるかは,以下のビデオを見るとよくわかり,興味が湧くはずです。
- Declarative UI (QML)
- URL:http://doc.trolltech.com/qml-snapshot/declarativeui.html
YouTube - QML Demo: Ars Feed Wall
YouTube - QML Dev Days 2009
YouTube - QML flickr browser demo
当初は,Qt 4.6でのリリースが予定されていましたが,2009/12/1のリリースには入りませんでした。しかし,2週間後の2009/12/14に,別のモジュールとして正式リリースされ,Qt 4.6を使って,宣言的UIをインストールして使えるようになりました。
- Qt Labs Blogs >> Qt Declarative for Qt 4.6.0 released
- URL:http://labs.trolltech.com/blogs/2009/12/14/qt-declarative-for-qt-460-released/
パッチリリースの4.6.1以降に含まれる予定で,めったにないパッチリリースでの機能追加です。
なお図1のように,Qt 4.6と同時にリリースされたQt Creatorには,すでにQMLプロジェクト作成機能が入っています。

