Qt 導 入 手 引 書 (X11) 2009 年 12 月 25 日 第 5 版 株 式 会 社 SRA
目 次 1 Qt のインストール... 3 1.1 インストール 準 備... 3 1.2 インストール 手 順... 4 1.3 インストールファイル... 6 1.4 アンインストール 手 順... 8 2 Qt の 簡 単 な 使 い 方... 9 2.1 サンプルプログラムの 実 行 方 法... 10 2.2 開 発 手 順...11 3 Qt を 習 得 するには... 15 3.1 Qt に 付 属 の 情 報... 16 3.2 Qt に 関 する 書 籍... 18 3.3 Qt の 情 報 源... 19 改 訂 履 歴... 20 Copyright (C) 2006-2009 Software Research Associates, Inc. All Rights Reserved 2
1 Qt のインストール この 文 書 では Qt を 単 体 インストールする 手 順 について 説 明 します 1.1 インストール 準 備 インストールする 前 に 以 下 の 手 順 にしたがってインストール 前 の 準 備 を 行 ってください (1) ユーザ 権 限 の 確 認 Qt を root 権 限 が 必 要 な 場 所 にインストールする 場 合 root もしくは root 権 限 を 持 っ たユーザのアカウントとパスワードが 必 要 です (2) Qt の 入 手 Qt のソースコードを Qt Development Frameworks のサイトからダウンロードして 入 手 します バージョン 番 号 を 4.6.0 とすると Qt のソースコードファイル 名 は 次 のようになってい ます 項 目 ファイル 名 Qt ソースコード qt-everywhere-commercial-src-4.6.0.tar.gz Qt SDK をインストールする 場 合 qt-sdk-linux-x86-commercial-yyyy.xx.bin をダウンロードし ます この 場 合 以 降 のドキュメントの 説 明 で 用 いている 上 記 の 単 体 インストールとは 手 順 インスト ールされる 構 成 内 容 が 異 なる 部 分 がありますのでご 注 意 ください (3) ライセンシー 名 ライセンスキー ライセンスキーの 確 認 インストール 時 に ライセンスキーを 入 力 する 必 要 があります 次 のような 記 述 を 含 む 案 内 メールが 送 られてきますので Name 及 び License Key をご 確 認 ください (ライセンス 情 報 ) Name: Taro Yamada Company name: Software Research Associates, Inc., Japan License Key: AAAA-BBB BBB-CCC CCC-DDD DDD-EEEE EEEE-FFFFF FFFFF-GGGGG Period:2010/2/1 3
1.2 インストール 手 順 (1) Qt ソースコードアーカイブ アーカイブの 展 開 次 のコマンドを 実 行 し Qt ソースコードを 適 当 なパスに 展 開 します $ tar xzvf qt-everywhere-commercial-src-4.6.0.tar.gz 展 開 すると qt-everywhere-commercial-src-4.6.0 というディレクトリができますので そこへ 移 動 します $ cd qt-everywhere-commercial-src-4.6.0 (2) configure お 使 いのマシンの 環 境 に 合 わせた Makefile を 作 成 するために configure スクリプトを 実 行 します $./configure 上 記 のように 実 行 する 場 合 Qt のインストール 先 は /usr/local/trolltech/qt-4.6.0 にな ります インストール 先 のディレクトリ 構 成 は 次 のようになります /usr/local/trolltech/qt-4.6.0/bin/ doc/ examples/ インストール 先 を 例 えば /usr/local/qt/qt-4.6.0 以 下 に 変 更 したい 場 合 は 次 のように configure を 実 行 します $./configure prefix /usr/local/qt/qt-4.6.0 この 場 合 インストール 先 のディレクトリ 構 成 は 次 のようになります /usr/local/qt/qt-4.6.0/bin/ doc/ examples/ 4
configure スクリプトでは -prefix 以 外 にも いろいろなオプションを 指 定 できます configure を 次 のように 実 行 すると 指 定 可 能 なオプションの 一 覧 が 表 示 されます $./configure help (3) Commercial Edition の 選 択 configure スクリプト 実 行 時 に Commercial Edition 又 は Open Source Edition の 利 用 を 選 択 する 必 要 があります 以 下 のメッセージが 表 示 されたら c キーを 押 下 し Commercial Edition の 利 用 を 選 択 してください Type c if you want to use the Commercial Edition. Type o if you want to use the Open Source Edition. (4) ライセンスキーの 入 力 次 に ライセンスキーを 入 力 する 必 要 があります 以 下 のメッセージが 表 示 されたら 案 内 メールに 記 載 された License Key を 入 力 してください Please enter your license key: 又 は 下 記 の 内 容 をライセンスファイルとして $HOME/.qt-license に 配 置 することによ り configure スクリプトがその 内 容 を 自 動 で 読 み 込 みますので 入 力 が 不 要 になります Licensee="Taro Yamada" LicenseKeyExt=AAAA-BBB-CCC-DDD-EEEEE-FFFFF-GGGG (5) make configure が 終 了 したら 次 のコマンドを 実 行 して Qt をビルドします $ make (6) make install Qt をビルドできたら 次 のコマンドを 実 行 して Qt をインストールします 必 要 に 応 じて root 権 限 で 実 行 して 下 さい $ make install 5
(7) PATH の 設 定 Qt のインストール 先 が /usr/local/trolltech/qt-4.6.0 である 場 合 Qt のプログラムを 作 成 するために 必 要 なツールやその 他 のコマンド(qmake moc uic designer assistant など)は /usr/local/trolltech/qt-4.6.0/bin に 置 かれますので それらのコマンド 群 があ るディレクトリを 環 境 変 数 PATH に 含 める 必 要 があります 次 の 一 行 を $HOME/.bashrc に 書 き 足 して 下 さい export PATH=/usr/local/Trolltech/Qt-4.6.0/bin:${PATH} なお csh 系 のシェルをお 使 いの 場 合 は $HOME/.login に 次 の 行 を 追 加 して 下 さい setenv PATH /usr/local/trolltech/qt-4.6.0/bin:${path} 1.3 インストールファイル インストールされたファイルについて 記 載 します ここでは インストール 先 をトップデ ィレクトリとした 場 合 のサブディレクトリ 単 位 で 代 表 的 なものについてのみ 記 載 します (1) bin ディレクトリ Qt が 提 供 する 各 種 コマンド ツール Qt ライブラリ 本 体 が 格 納 されています 代 表 的 なツールは 以 下 の 通 りです assistant (ドキュメントブラウザ) designer (GUI レイアウトツール) linguist (ローカライズ 支 援 ツール) qmake (ビルドルール 生 成 コマンド) qtdemo (デモンストレーションランチャ) lupdate (ローカライズ 対 象 フレーズ 抽 出 コマンド) lrelease (ローカライズファイル 変 換 コマンド) moc (メタオブジェクトコンパイラ) uic (ユーザインタフェースコンパイラ) (2) demos, examples ディレクトリ デモンストレーションプログラム(demos)とサンプルプログラム(examples)が 格 納 され ています 6
(3) doc ディレクトリ Qt のドキュメントが 格 納 されています html サブディレクトリ 以 下 に HTML 形 式 で 格 納 されています (4) include ディレクトリ インクルードファイルが 格 納 されています include ディレクトリ 以 下 は モジュール 毎 にサブディレクトリが 作 成 分 類 されています (5) lib ディレクトリ アプリケーションのビルド 時 に 必 要 なライブラリ 等 が 格 納 されています (6) mkspecs ディレクトリ プラットフォーム コンパイラ 固 有 の 設 定 ファイルが 格 納 されています (7) plugins ディレクトリ プラグイン 形 式 のライブラリが 格 納 されています プラグインの 用 途 毎 に 格 納 されるサ ブディレクトリが 分 類 されています (8) translations ディレクトリ Qt ライブラリ 本 体 内 で 使 用 されているフレーズについての 翻 訳 ファイルとロード 可 能 モ ジュールファイルが 格 納 されています 7
1.4 アンインストール 手 順 アンインストールするには 1.1 インストール 手 順 で make install を 実 行 したディレ クトリで 次 のコマンドを 実 行 します 必 要 に 応 じて root 権 限 で 実 行 してください $ make uninstall 8
2 Qt の 簡 単 な 使 い 方 ここでは Qt ソースコードを 使 用 してのアプリケーション 開 発 方 法 についてご 説 明 します まずは 付 属 のサンプルプログラムの 実 行 方 法 についてご 説 明 します その 後 Qt API を 使 用 した Qt アプリケーションの 実 装 方 法 ビルド 方 法 実 行 方 法 についてご 説 明 します 9
2.1 サンプルプログラムの 実 行 方 法 Qt には 数 多 くのサンプルプログラムが 含 まれています Qt ソースコードのインストール 後 以 下 の 方 法 で 付 属 のサンプルプログラムを 実 行 することが 出 来 ます Qt をインストールしたトップディレクトリを /usr/local/trolltech/qt-4.6.0 とした 場 合 以 下 のディレクトリ 内 にサンプルプログラムがカテゴリごとに 分 類 されて 置 かれています /usr/local/trolltech/qt-4.6.0/examples 例 えば /usr/loca/trolltech/qt-4.6.0/examples/widgets/calculator には 計 算 機 のプログ ラムがあります これを 起 動 するには 次 のようにします $ cd /usr/local/trolltech/qt-4.6.0/examples/widgets/calculator $./calculator 次 のようなウィンドウが 表 示 されます 10
2.2 開 発 手 順 ここでは Qt を 使 用 したプログラム 開 発 における 手 順 について 説 明 します Qt を 使 用 したプログラムのソースファイルを 作 成 し ビルド 実 行 する 一 般 的 な 手 順 は 次 のようになります (1) プロジェクトディレクトリの 作 成 (2) ソースファイルの 作 成 編 集 (3) プロジェクトファイルの 作 成 編 集 (4) ビルドルールの 作 成 (5) ビルド (6) 実 行 この 手 順 の 例 として Qt を 使 用 した 簡 単 なプログラムを 最 初 から 作 成 してみます ここで は Hello World! と 言 う 文 字 列 が 書 かれたボタンを 表 示 するプログラムを 作 成 します 以 下 で 手 順 を 説 明 します (1) プロジェクトディレクトリの 作 成 実 行 可 能 ファイルやライブラリ 等 を 作 成 するための 単 位 を プロジェクト と 呼 びます プロジェクトは 実 装 ファイルやヘッダファイル リソースファイル 等 で 構 成 されます まずは これらのファイルを 格 納 するためのディレクトリを 作 成 します 以 下 のコマンドを 実 行 します $ mkdir hello (2) ソースファイルの 作 成 編 集 プロジェクトディレクトリへ 移 動 します $ cd hello ここに 必 要 なソースファイルやヘッダファイルなどを テキストエディタを 使 用 して 作 成 します 今 回 はこのフォルダ 内 にソースファイル main.cpp を 以 下 の 内 容 で 作 成 します 11
#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("hello world!"); hello.resize(100, 30); } hello.show(); return app.exec(); (3) プロジェクトファイルの 作 成 プロジェクトファイルとは プロジェクトをビルドするために 必 要 な 情 報 が 記 述 された ファイルです また その 内 容 はプラットフォーム 非 依 存 なものになります プロジェ クトファイルを 基 に 各 プラットフォーム 上 でビルドするためのビルドルールが 記 述 さ れたファイルを 生 成 することができます プロジェクトファイルを 手 動 で 記 述 することもできますが Qt ではプロジェクトのフォ ルダ 内 の 情 報 から 自 動 的 にプロジェクトファイルを 生 成 する 方 法 も 提 供 しています 自 動 的 にプロジェクトファイルを 生 成 するには 以 下 のコマンドを 実 行 します $ qmake -project qmake コマンドにオプション 引 数 -project を 付 けて 実 行 すると プロジェクトフ ォルダ 内 に 収 められたファイルの 情 報 を 読 み 込 み それらをビルドするためのプロジェ クト 情 報 として デフォルトのプロジェクトファイルが 生 成 されます デフォルトのプ ロジェクトファイルは プロジェクトのフォルダ 名 に 対 して 拡 張 子.pro が 付 加 された ものになります この 場 合 hello.pro という 名 前 でプロジェクトファイルが 生 成 されま す 開 発 者 はこのデフォルトのプロジェクトファイルに 対 して 追 加 修 正 を 加 えることで 12
開 発 者 の 要 求 に 応 じたプロジェクトファイルとしてカスタマイズを 行 う 事 が 出 来 ます このコマンドを 実 行 する 必 要 があるのは 主 に 次 のような 場 合 です 新 しくプロジェクトを 作 成 して まだ.pro ファイルが 存 在 しないとき プロジェクトを 構 成 するファイルを 追 加 もしくは 削 除 したとき あるいはファイル 名 が 変 更 されたとき ファイルを 編 集 して 内 容 が 変 わっても プロジェクトを 構 成 するファイルの 名 前 や 数 が 変 わらなければ このコマンドを 実 行 する 必 要 はありません プロジェクトファイルに 対 して 手 動 で 追 加 修 正 した 場 合 qmake project を 実 行 す ることで プロジェクトファイルが 上 書 きされ 変 更 した 部 分 が 失 われてしまいますの で ご 注 意 ください (4) ビルドルールの 作 成 先 ほど 作 成 したプロジェクトファイルを 基 に ビルドルールが 記 述 されたファイルを 作 成 します ビルドルールの 作 成 は コマンドプロンプト 上 で 次 のように qmake コ マンドを 引 数 無 しで 実 行 します $ qmake 上 記 のように 実 行 すると qmake コマンドが プロジェクトファイル hello.pro の 内 容 を 読 み 込 み あらかじめ 設 定 されている 環 境 に 合 わせたビルドルールが 生 成 されま す 今 回 は make コマンド 用 の Makefile が 生 成 されます このコマンドを 実 行 する 必 要 があるのは 次 のような 場 合 です ビルドルールが 記 述 されたファイルが 存 在 しない 場 合 Qt プロジェクトファイルが 更 新 された 場 合 実 装 したクラスに 新 たに Q_OBJECT マクロを 追 加 した 場 合 (5) ビルド 先 ほど 作 成 したビルドルールが 記 述 されたファイルに 従 って プロジェクトをビルドし ます 13
今 回 は 生 成 されるビルドルールが make コマンド 用 になりますので 以 下 のようにコマ ンドを 実 行 してビルドを 行 います $ make (6) 実 行 ビルドが 成 功 すると プログラムの 実 行 形 式 が 生 成 されます 実 行 可 能 ファイルの 名 前 は プロジェクトディレクトリ 名 と 同 じになります $./hello 14
3 Qt を 習 得 するには Qt には アプリケーション 実 装 の 際 に 参 考 になるプログラムが 多 数 含 まれています これ らに 目 を 通 しておくことで アプリケーションを 開 発 する 際 のヒントが 得 られます また 書 籍 として 発 行 されている 情 報 や Qt Development Frameworks, Nokia 社 のサイトにも 開 発 の 際 に 役 に 立 つ 多 数 のドキュメントが 提 供 されていますので ここではそれらの 情 報 に ついて 記 述 します 15
3.1 Qt に 付 属 の 情 報 ここでは Qt を 導 入 するにあたり 参 考 になるような 情 報 として Qt に 付 属 しているサンプ ルプログラムやドキュメントについてご 紹 介 します Qt 付 属 のサンプルプログラム Qt をインストールしたディレクトリ 直 下 の examples 以 下 に 多 数 のサンプルプログラ ムが 含 まれています これらは Qt 個 々の 機 能 のサンプルプログラムであり 機 能 ごと に 分 かれて 置 かれています こ の 中 で も も っ と も 自 習 用 に お 勧 め の プ ロ グ ラ ム が チ ュ ー ト リ ア ル (examples/tutorial)です Qt 付 属 のドキュメントにチュートリアルの 解 説 があります ので 合 わせてご 参 照 ください Qt 付 属 のデモンストレーションプログラム Qt をインストールしたディレクトリ 直 下 のdemos 以 下 にデモンストレーション 用 のプ ログラムが 含 まれています Qt Examples and Demos は Qt のデモンストレーショ ンプログラムおよびサンプルプログラムを 起 動 するためのランチャプログラムです ランチャプログラムを 通 して Qt が 提 供 するデモンストレーションプログラム 等 を 簡 単 な 操 作 で 確 認 する 事 ができます Qt 付 属 のドキュメント Qt には Qt Reference Documentation というオンラインマニュアルが 付 属 していま す 次 の 二 つのツールで 参 照 できますが 内 容 は 同 じです なお Qt Reference Documentation および Qt Assistant のインストール 先 については 1.3 インストール ファイル をご 覧 ください Qt Assistant(ドキュメントブラウザ)で 表 示 Qt Assistant は Qt のドキュメントブラウザです Qt Assistant が 表 示 する 内 容 は 次 項 のウェブブラウザで 表 示 できるものとほぼ 同 じですが ドキュメントの 階 層 表 示 や キーワードによる 全 文 検 索 ができるなど やや 高 機 能 になっています チュ ートリアルの 解 説 ページは 以 下 の 要 領 で 辿 る 事 ができます Qt Reference Documentation Getting Started Tutorials, Examples and Demonstrations 16
ウェブブラウザで 表 示 Qt Reference Documentation は HTML 形 式 ですので ウェブブラウザを 使 用 して 表 示 できます index.html がトップページです トップページの Tutorial and Examples というリンクをクリックすると チュートリアルやサンプルプログラム の 解 説 ページを 辿 ることができます 17
3.2 Qt に 関 する 書 籍 ここでは Qt について 記 述 されている 書 籍 についてご 紹 介 します 英 語 で 記 述 されたもの と その 日 本 語 訳 の 書 籍 があります 入 門 Qt 4 プログラミング ( 既 刊 Qt 4.1 ベース) Jasmin Blanchette, Mark Summerfield 著 杵 渕 聡 杉 田 研 治 訳 オライリー ジャパン Qt GUI プログラミング ( 既 刊 Qt 3 ベース) Jasmin Blanchette, Mark Summerfield 著 杵 渕 聡 杉 田 研 治 訳 ソフトバンク パブリッシング 株 式 会 社 C++ GUI Programming With Qt 4 Second Edition (2008 年 2 月 8 日 発 売 洋 書 Qt 4.3 ベース) Jasmin Blanchette, Mark Summerfield 著 Prentice Hall C++ GUI Programming With Qt 4 (2006 年 7 月 7 日 発 売 洋 書 Qt 4.1 ベース) Jasmin Blanchette, Mark Summerfield 著 Prentice Hall 18
3.3 Qt の 情 報 源 Qt Development Frameworks, Nokia 社 の 公 式 サイト(http://www.qt.nokia.com/)に Qt の 情 報 が 集 約 されています 開 発 者 向 けページ(http://www.qt.nokia.com/developer/) から 辿 ることができる 以 下 のページが 特 にお 勧 めです Supported Platforms http://qt.nokia.com/doc/4.6/supported-platforms.html プラットフォームに 関 する 情 報 です FAQ http://www.qt.nokia.com/developer/faqs/ FAQ のページです Qt Bug Tracker http://bugreports.qt.nokia.com/ ユーザから 報 告 のあった 不 具 合 や 提 案 などの 一 覧 があります Online Reference Documentation http://qt.nokia.com/doc/ リファレンスマニュアルや 各 種 ツール 定 期 刊 行 記 事 へのリンクがあります 19
改 訂 履 歴 日 付 内 容 2009 年 12 月 25 日 Qt 4.6.0 に 対 応 商 用 版 向 けに 共 用 化 2009 年 7 月 14 日 Qt 4.5.2 に 対 応 2008 年 7 月 25 日 Qt 4.4.0 に 対 応 2006 年 9 月 10 日 インストール 先 のディレクトリ 構 成 アンインストール 手 順 を 追 加 2006 年 7 月 13 日 新 規 作 成 20