Qt最新事情-QtでWebKitを使ってみよう

第5回 Qt WebKit~ブラウザ機能の基本

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

Qt WebKitの動かし方

Qt WebKitを動かすには3通りの方法があります。

(1) Qt 4.4.3のQt WebKit

現時点での正式リリース版です。Qtにはリリース時のWebKitのソースコードが含まれています。Qt 4.4.3では,Qt WebKitでYouTubeなどの動画再生はまだできません。

(2) Qt 4.4.3とオープンソースWebKit

Qt 4.5向けのQt WebKitの開発中のソースコードは,開発中のWebKitに含まれています。Phononをバックエンドとして,Qt WebKitでFlashビデオの再生ができます。Qt本体は4.4.3なので,最新のQt WebKitを安定して動くQtで試せます。

(3) Qt 4.5 Technology Preview

Qt本体がQt 4.5の開発版となる他は(2)と同様です。

Qt WebKitのビルド方法

Qt 4.4.3やQt 4.5 Technology Previewには,各Qtで使えるWebKitが同梱されているので,Qtをインストールすれば,Qt WebKitが使えます。

Qt 4.4.3とオープンソースWebKitを用いる場合には,まず,Qt 4.4.3をインストールしておき,次にWebKitをビルドします。

1.SVNリポジトリからWebKitを引出します。1Gバイト以上あります。

$ svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit

2.ビルド環境の設定

オプション--releaseまたは--debugを指定してビルドモードを設定し,環境変数QTDIRを設定します。

$ cd WebKit/WebKitTools/Scripts
$ ./set-webkit-configuration --release
$ export QTDIR <Qt 4.4.3のインストールディレクトリ>

3.ビルド

ビルド方法は以下のようにします。WebKit/WebKitBuild/Releaseのlibやbinにライブラリやサンプルブラウザが作成されます。

$ cd WebKit/WebKitTools/Scripts
$ ./build-webkit

4.実行

最小限のブラウザ機能を実装したWebKit/qt/QtLaucherもビルドされ,WebKit/WebKitBuild/Release/binの下にでき,以下のようにすれば動かせます。

$ cd WebKit/WebKitTools/Scripts
$ ./run-launcher

図1 WebKitのQtLauncher

図1 WebKitのQtLauncher

Qt WebKitの構成

Qt WebKitは,表3に挙げたクラスから構成されていて,QtからWebKitの種々の機能をアクセスできるようにしています。

表3 Qt WebKitのクラス一覧

クラス機能
QWebFrameWebページ内のフレーム
QWebHistoryQWebPageのヒストリー
QWebHistoryInterfaceリンクヒストリーの実装とのインターフェース
QWebHistoryItemQWebPageのヒストリー項目
QWebHitTestResultWebページのヒットテスト結果
QWebPageWebドキュメントオブジェクト
QWebPluginFactoryWebページに組込むプラグイン生成
QWebSettingsQWebPageとQWebFrameの設定内容の格納
QWebViewWebドキュメントの表示と編集をするウィジェット

図2に,これらのクラスの関連を示します。QWebPageはWebのページに対応し,ページ内のフレームはQWebFrameで構成されています。実際に目に見える表示をするのはQWebViewで,QWebPage内のページがQWebViewに表示されます。

図2 Qt WebKitのクラス関連図

図2 Qt WebKitのクラス関連図

Webページの表示

リスト1は,コマンドラインで指定したURLを開いて表示するプログラムです。実行は以下のようにします。

$ step1 url

QWebViewのインスタンスを生成し,URLを指定してロードしているだけです。図3は,その実行結果です。右ボタンをクリックして表示されるコンテキストメニューによって,ページを行き来するナビゲーションもできます。

リスト1 step1.cpp

01: #include <QApplication>
02: #include <QtWebKit>
03: 
04: int main( int argc, char** argv )
05: {
06:     QApplication app( argc, argv );
07: 
08:     QUrl url;
09:     if ( argc == 1 )
10:         url = QUrl( "http://trolltech.com" );
11:     else
12:         url = QUrl( argv[1] );
13: 
14:     QWebView* webView = new QWebView( 0 );
15:     webView->load( url );
16:     webView->show();
17: 
18:     return app.exec();
19: }

図3 step1の実行結果

図3 step1の実行結果

QWebView::load() の実装コードでは,表示対象のQWebPageオブジェクトのインスタンスのメインフレームのQWebFrame::load() にURLを指定して呼出しています。

Qt 4.5 Technology PreviewかWebKitを用いれば,リスト2の行番号14~15のコードを付け加えるだけで,http://jp.youtube.comをコマンドラインで指定すれば,YouTubeの動画も再生できるようになります。

リスト2 step2.cpp

12:          url = QUrl( argv[1] );
13: 
14:     QWebSettings* webSettings = QWebSettings::globalSettings();
15:     webSettings->setAttribute( QWebSettings::PluginsEnabled, true );
16: 
17:     QWebView* webView = new QWebView( 0 );

QWebSettingsにはフォントのファミリーやサイズ設定,イメージ読み込みの可否やJavaScriptの有効無効などの設定が格納され,QWebPageとQWebFrameでその設定値が使われます。

著者プロフィール

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

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

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