Ubuntu Weekly Recipe

第284回 クロスプラットフォームなアプリケーション開発フレームワークQtでプログラミングをはじめる

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

HelloWorld

GUIツールキットなので、GUIなHelloWorldを作成したいと思います。今回はC++を使って開発します。

それではさっそく,IDEのQtCreatorを立ち上げましょう。Windowsキー(Superキー)を押してDashを開き,⁠QtCreator⁠と入力して起動します。プログラムの作成を始めるにはプロジェクトを作成します。⁠ファイル][ファイル/プロジェクトの新規作成]をクリックします。プロジェクトの中からアプリケーションを選択し,⁠Qt GUI アプリケーション]を選択して,選択をクリックします。プロジェクト名を適当に付けます。ここでは⁠HelloQtWorld⁠としました。あとは,とりあえずデフォルトのままでNextをクリックしていきます。すると,図2のようにひな形ができあがります。

図2 編集モード

図2 編集モード

次に,プロジェクトからフォームをクリックし,⁠mainwindow.ui」をダブルクリックします。すると,UI編集画面になります。左にウィジェット,真ん中に画面,右にプロパティリストなどが並んでいます。今回はDisplayWidgetsのLabelを使います。ウィジェットを掴んで画面にドロップします。これで配置は完了します。

図3 デザインモード

図3 デザインモード

設置したLabelウィジェットをダブルクリックして⁠HelloQtWorld⁠と入力しましょう。そして,左下にある再生マークの形をしているRunボタンをクリックしてみましょう。ビルドを開始するので,未保存のソースがあるとダイアログが出てきます。すべて保存をクリックします。どうでしょうか,うまく表示されましたか? 確認できたら,終了の×ボタンをクリックして終了します。

図4 実行結果

図4 実行結果

ビルド・実行などが失敗した場合は,コンパイラの出力結果などを確認する必要があります。QtCreatorのアウトプットペインと呼ばれるボタンを押すことで該当の出力を確認できます。

図5 アウトプットペイン

図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が参考になるでしょう。

注3)
Ubuntu 13.04ではバグがあるため,Qt5のドキュメントではなくQt4のドキュメントが表示されてしまいます。

Qtを学ぶには

QtはC++なので,C++の基本を学ぶべきでしょう。使い方は機能が広範囲かつ膨大なので基本的には公式ドキュメントを参照するのが良いでしょう。日本語の書籍もいくつかあります。英語にはなりますがまずはGetting Started with Qtを一通り眺めるのが良いです。Qtは歴史が長いこともあり,多数の情報がネット上にありますが,すでに古くなってしまっていることもある点に注意してください。

前述で述べたQt5の特徴であるQMLについてはSoftware Designのバックナンバー2013年1月号の記事が参考になるでしょう。また,2013年8月2日にはアスキー・メディアワークスさんから「Qt QuickではじめるクロスプラットフォームUIプログラミング」販売される予定です。著者は共に,Qt Ambassador注4の折戸さんです。

注4)
Qt AmbassadorとはNokia社が開発していた時代に作られた認定制度です。現在の制度については,Qt Ambassador Programを参照してください。

謝辞

Qt勉強会の皆さまにご助言を頂きました。ありがとうございました。

著者プロフィール

松本直樹(まつもとなおき)

とあるメーカー系企業に務めるエンジニア。玄箱PRO(ARM)でDebianを触ったことがきっかけでデスクトップLinuxを使い始めて,今はどこにでもいるUbuntuユーザの1人。