進化するQt-Qt最新事情2009

第3回 Qt 4.5最新動向

この記事を読むのに必要な時間:およそ 5 分

はじめに

Qt 4.5とQt Creator 1.0は2009年3月初めにリリースされました。それから時間も経ち,8月末までに2回バグ修正バージョンがリリースされています。

表1 Qt 4.5.xリリースの軌跡

リリース日バージョン
2009/3/3Qt 4.5.0,Qt Creator 1.0
2009/4/23Qt 4.5.1,Qt Creator 1.1
2009/6/25Qt 4.5.2,Qt Creator 1.2

リリースされてすでに半年以上が過ぎていますので,Qt 4.5の新機能については,ここでは概要を紹介するに留めます。次に,表立って取り上げられてはいませんが,Qtの中心的な機能であるオブジェクトシステムにも変更が加えられているので,その内容を説明します。そして,次回以降で,Qt 4.5で大きく変わったQtに付属するGUIツールQt DesignerとQt Linguistについて詳しく新機能を説明します。

Qt 4.5の改善と新機能の概要

Qt 4.5: What's New in Qt 4.5にある,Qt 4.5の改善や新機能のまとめを元に説明します。

Qt WebKitインテグレーション

Qt WebKitインテグレーションはQt 4.4から追加された機能で,WebKitをブラウザとしてQtから利用できるだけでなく,QtのウィジェットをWebコンテンツと混在させて,アプリケーションを開発できる機能です。Qtに同梱されているWebKitが更新され,以下の機能が追加されて,ほぼフルブラウザと呼べるようになりました。

  • ACID3スコアが100/100になり,Web標準をクリアしたWebブラウザがQtで利用できるようになりました。

  • イメージとフォントのフルページズーミング
     イメージとフォントの両方,あるいはどちらか片方のズーミングができます。

  • CSSベースの図形変換とアニメーション

  • JavaScriptエンジンの速度改善

  • NetscapeプラグインAPI(NPAPI)
     UNIX/Linux X11,Mac OS X,Windowsで使用できます。残念なことですが,これら以外のプラットフォームへの対応予定はロードマップにありません。Flash Playerプラグインなどが使え,YouTubeのFLV動画再生ができます。SWFも,Linuxでは32ビットと64ビットで共に使えます。しかし,Mac OS Xでは,SWFはマウス操作もキー操作もできないため,SWFは扱えませんでした。同じようにWebKitを使っているSafariでは問題なくSWFを使えます。

  • Phononインテグレーション
     HTML 5のオーディオとビデオの各エレメントによる音声と動画がサポートされています。

  • クライアントサイドデータベースストレージ
     QtとのインターフェースのためにQWebDatabaseが追加され, QWebSettingsにsetOfflineStoragePath(), offlineStoragePath(), setOfflineStorageDefaultQuota(), offlineStorageDefaultQuota()などのメソッドが追加されています。

パフォーマンス改善

  • X11でのMIT-SHM(MIT Shared Memory Extension)の利用
     昨年の特集記事で触れたように,MIT-SHMを利用することで,イメージデータがメモり共有され,X11 のクライアントとサーバ間での一番のボトルネックが解消され,イメージの回転や拡大縮小表示で,劇的な描画速度改善がされています。次項のラスターグラフィックスエンジンを指定すると,MIT-SHMが有効になります。

  • ラスターグラフィックスシステム
     描画エンジンがプラグイン化され,ラスター,OpenGL,プラットフォーム固有のものから,目的に合ったものを選択できるようになりました。コマンドラインオプション-graphicssystemでraster,opengl,nativeを指定するか,QApplication::setGraphicsSystem ⁠const QString& system)で,グラフィックシステムを切り替えられます。

  • QTestLibへのベンチマーク機能の追加
     実時間,CPUクロックカウント,Valgrind/Callgrind,イベントカウントなどの計測機能があります。

  • OpenGL ES 2.0ベースの描画エンジン
     OpenGL描画エンジンとしてOpenGL ESも使えるようになりました。

Mac OS X Cocoa サポート

Qt/Mac OS XはCarbonで実装されています。Cocoaのサポートは,64ビット対応が一番の目的です。64ビットはCarbonではサポートされず,Cocoaのみでのサポートとなったため,Qtが64ビット対応するには,Cocoaでの再実装が必要でした。

configureのデフォルトはCarbonで,Cocoaや64ビットにするには表2のようにオプション指定します。

表2 Qt/Mac OS Xのconfigureオプション

オプション結果
-cocoa32ビット Cocoa
-arch x86_6464ビット Cocoa
-arch "x86 x86_64"32ビットと64ビット Cocoa

今後のリリースではCocoaがデフォルトになり,Carbonサポートが打ち切られる予定です。

QMacCocoaViewContainerとQMacNativeWidgetの2つのクラスが追加され,Cocoaの独自機能と部品もQtで扱えます。

また,リリース直後のせいか,QTransformationで射影変換をすると,Carbonでは問題がないのですが,QPainter::drawLine() で描いた線分の変換結果が間違っています。ラスターエンジンにすると変換結果は正しくなりますが,間違った線分が一瞬描かれた後に正しい線分が描かれます。

Cocoaサポートとは関係がありませんが,GCC 4.2も使えるようになっています。

Windows CEサポート

Windows CEでPhononとWebKitが利用可能になりました。

QtXmlPatternsでXSLTサポート

XQueryとXPathをサポートしているQtXmlPatternsで,XSLTが利用可能になりました。

Qtスクリプトデバッガ

QtのECMAScript(JavaScript)をベースにしたQtScriptモジュール用のGUIデバッガが追加されました。

OpenDocumentファイルフォーマットの出力

PostScriptやPDFに加えて,ODFの出力もできるようになりました。Qt DemosのText Editで試してみると,日本語の扱いもできています。PDF出力が追加されたときには,文字表示でジャギーが目立って,改善を待たなければなりませんでしたが,ODF追加ではそのようなことはありませんでした。

この機能の説明とサンプルコードは,Writing ODF Files with Qtのページから入手できます。

ネットワークプロキシーサポートの改善

Qt DesignerとQt Linguistの改良

これについては別項で詳しく説明します。

グラフィック機能の改善

  • トップレベルウィンドウの透過度設定Qt 4.5: QWidget Class Reference
     ウィンドウ属性Qt::WA_TranslucentBackgroundが追加され,トップレベルウィンドウに,ピクセル単位で透過度を設定できるようになりました。X11とWindowsでは,ウィンドウフラグQt::FramelessWindowHintの設定が必要で,以下の使用条件があります。

    • X11…ARGBビジュアルとコンポジットウィンドウマネージャがサポートされたXサーバが必要

    • Windows…Windows 2000以降

マウスイベントが効くかどうかが透明度で決まり,その透明度がプラットフォームによって違っているので,扱いに注意が必要です。

スタイルシート

Mac OS Xでもスタイルシートがウィジェットで使えるようになりました。

著者プロフィール

杉田研治(すぎたけんじ)

1955年生まれ。東京都出身。株式会社SRAに勤務。プログラマ。

仕事のほとんどをMac OS XとKubuntu KDE 4でQtと供に過ごす。

コメント

コメントの記入