ワークアラウンドとして次のコマンドを実行します。
$ sudo ln -s /usr/share/qt4/translations/ /usr/share/qt5/translations
導入されるパッケージは多数に及びますが、いくつか抜粋しますと次のようなものがインストールされます。
build-essential
コンパイラ(gcc、g++)やmakeなどビルドするのに必要なものが揃ったメタパッケージです。
libqt4-dev
Qt4の開発用ライブラリなどのメタパッケージです。Ubuntuの場合は、12.10まではQt4の環境が、13.04からはQt4とQt5の環境が導入されます。Ubuntu 12.04 LTSを使っている場合は、Ubuntu SDKのPPAを追加しておくことで、Qt5を導入 することが可能です。
qt5-default
このメタパッケージにより、Qt5が導入されます。このパッケージはUbuntu 13.04から用意されています。
qtcreator
QtCreatorとは、Qtで作られたC、C++向けのIDEです。とても軽快に動作し、補完機能、各種ドキュメントへのアクセス、デバッガとの連携、バージョン管理ソフトウェアとの連携など他のIDEと比較しても遜色がありません。Qt自体はC++のライブラリなので、コンソールで使い慣れたエディタを利用して開発していく事も充分に可能ですが、やはり専用の環境は利便性が高いです。何より準備が楽ちんです。
HelloWorld
GUIツールキットなので、GUIなHelloWorldを作成したいと思います。今回はC++を使って開発します。
それではさっそく、IDEのQtCreatorを立ち上げましょう。Windowsキー(Superキー)を押してDashを開き、“ QtCreator” と入力して起動します。プログラムの作成を始めるにはプロジェクトを作成します。[ ファイル]-[ファイル/プロジェクトの新規作成]をクリックします。プロジェクトの中からアプリケーションを選択し、[ Qt GUI アプリケーション]を選択して、選択をクリックします。プロジェクト名を適当に付けます。ここでは“ HelloQtWorld” としました。あとは、とりあえずデフォルトのままでNextをクリックしていきます。すると、図2のようにひな形ができあがります。
図2 編集モード
次に、プロジェクトからフォームをクリックし、「 mainwindow.ui」をダブルクリックします。すると、UI編集画面になります。左にウィジェット、真ん中に画面、右にプロパティリストなどが並んでいます。今回はDisplayWidgetsのLabelを使います。ウィジェットを掴んで画面にドロップします。これで配置は完了します。
図3 デザインモード
設置したLabelウィジェットをダブルクリックして“ HelloQtWorld” と入力しましょう。そして、左下にある再生マークの形をしているRunボタンをクリックしてみましょう。ビルドを開始するので、未保存のソースがあるとダイアログが出てきます。すべて保存をクリックします。どうでしょうか、うまく表示されましたか? 確認できたら、終了の×ボタンをクリックして終了します。
図4 実行結果
ビルド・実行などが失敗した場合は、コンパイラの出力結果などを確認する必要があります。QtCreatorのアウトプットペインと呼ばれるボタンを押すことで該当の出力を確認できます。
図5 アウトプットペイン
一連の流れがどうなっているのかソースコードを確認しましょう。ソースコードのmain.cppを開きます。QApplicationクラスは画面やマウスカーソルなどQtアプリケーションに関するリソースなどを管理しているものです。MainWindowクラスはmainwindow.cppに定義されているクラスです。そちらを開いてみると、QMainWindowクラスを継承したクラスだということがわかります。つまり、ウインドウを作成したい場合はQMainWindowクラスを継承したクラスを作成すればよいということです。
最後にウインドを可視状態にして、execを行います。QApplicationはメインイベントループとなります。GUIアプリケーションの場合はキーボードやクリックなどのイベントを監視して処理を行います。そのため、単純にreturnが実行されて終了することはありません。
ところで、実行結果を見るとWindowのタイトルがMainWindowになっていることに気付きます。これを変えてみましょう。編集モードからMain.cppを開いて、MainWindow w;の行の下に次の一行を追加します。
w.setWindowsTitle("HelloQtWindow");
ドットを入力したタイミングで候補リストが出てくると思います。ぜひ、コピー&ペーストをするのではなくタイピングして試してみてください。また、メンバ関数の情報などはカーソルを合わせてF1キーを押すことでドキュメントに飛ぶことができます[3] 。Runボタンを押して実行結果がどう変わるか確認しましょう。
QMLを使ったHelloWorldを作成してみたい場合は、Ubuntu-SDKのget-started が参考になるでしょう。
Qtを学ぶには
QtはC++なので、C++の基本を学ぶべきでしょう。使い方は機能が広範囲かつ膨大なので基本的には公式ドキュメントを参照するのが良いでしょう。日本語の書籍もいくつかあります。英語にはなりますがまずはGetting Started with Qt を一通り眺めるのが良いです。Qtは歴史が長いこともあり、多数の情報がネット上にありますが、すでに古くなってしまっていることもある点に注意してください。
前述で述べたQt5の特徴であるQMLについてはSoftware Designのバックナンバー2013年1月号の記事 が参考になるでしょう。また、2013年8月2日にはアスキー・メディアワークスさんから「Qt QuickではじめるクロスプラットフォームUIプログラミング」 が販売 される予定です。著者は共に、Qt Ambassador[4] の折戸さんです。
謝辞
Qt勉強会 の皆さまにご助言を頂きました。ありがとうございました。