QtおよびQtCreatorのインストール
はじめに
Qt 4.5 とQt Creator 1.0 のリリースを記念して、 インストールから簡単なアプリ作成までをさらりと書いてみます。
ダウンロード&インストール
ダウンロードはこちらから。バージョン4.5からは、
- Qt SDK
- Qt Framework Only
- Qt Creator
とダウンロードが分かれたようですが、Qt SDKはFramework+Creator+MinGWという全部入り版なようです。 今回は Qt SDKをダウンロード。 194Mちょいなので結構時間がかかります。焦らず待ちましょう。
LGPLの条項を読んでOkします。
Qt Creator,MinGW,Qt,がインストールされます。1.6GB消費とのこと。
インストールが終了するとQtCreatorが起動します。おっと、右下にNOKIA印が付いたのですね。
Hello,world!
まずプロジェクトを作成します。[File]-[New]から[Qt4 GUI Application]を選択します。
パスとプロジェクト名を入力します。
どのモジュールを追加するか聞かれますが、とりあえずデフォルトのままで行きます。
クラス名を聞かれます。まずは一番シンプルなQDialogを選びます。
ファイルがいくつか生成されますが、そのうちのdialog.uiをダブルクリックします。 GUIエディタ(かつてQt Designerという名前の単体アプリでした)が立ち上がります。
ウィンドウを適当に小さくして、Push Buttonを追加します。
今追加したPush Buttonを右クリックしてGo slot を選択します。
cliked()を選択してOkします。
すると、エディタにフォーカスが移動します。dialog.cppに Dialog::on_pushButton_clicked()が 追加され、メソッド内にカーソルが移動します。
ボタンが押されたらメッセージボックスを出すことにしましょう。 コードはこれだけです。
#include <QMessageBox> void MainWindow::on_pushButton_clicked() { QMessageBox::information(this,"Hello","Hello, World!"); }
Runボタンを押すと、ビルドが通り、ダイアログが表示されます。 ボタンを押すとメッセージが表示されました。すばらしくシンプルです。
※ Qt ではシグナル&スロットと呼ばれる機構でイベントなどのやり取りをするのですが、シグナルで 起動されるメソッドのことをスロットと呼びます。シグナルとスロットを接続するには、普通はconnect文を 記述するのですが、Qt Creatorの作成するプロジェクトでは、 on_送信元オブジェクト名_シグナル()という命名規則に則ったスロットに限っては自動的に接続されます。 この処理はui_dialog.cpp という、Creatorからは見えない(自動生成される)コードが 行っています。
画像ビューワを作ってみる
では次のアプリケーションを作ってみましょう。今度はファイルメニューから画像ファイルを選択すると 画面に表示するだけのアプリです。
[File]-[Session Manager]から新しいセッションを開き、同じく[File][New][Qt4 GUI Application]です。 今度はQMainWindowを選択します。
mainwindow.uiにGraphics View を置きます。
画面リサイズにも追従するようにしたいですよね。 ウィンドウの地べたを右クリックして、Layout -> Layout in a Grid を選択します。
これでウィンドウいっぱいにGraphics Viewが広がります。 次にメニューバー。Type Hereと書かれている場所をクリックしてテキストを書き込むだけです。
&File とか&Openのように書くと、Alt+F, Alt+O がキーボードショートカットになります。
メニューから呼ばれる動作は、ボタンなどのUIとは異なり、メニューをクリックして選択する以外の操作 (ツールバーとか、キーボードショートカットとか)からも呼ばれるので、メニューに縛られていません。 このような動作をアクションと呼びます。 [File][Open]を追加すると、action_Openというアクションが追加されます。
action_Openを右クリックで go to slot すると、MainWindow::on_action_Open_triggered()が追加されます。 コードはさっきよりは複雑です。
#include <QFileDialog> void MainWindow::on_action_Open_triggered() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)")); pixmap.load(fileName); scene.addPixmap(pixmap); ui->graphicsView->setScene(&scene); }
pixmapとscene はMainWindow.hで宣言します。
#include <QGraphicsScene> class MainWindow : public QMainWindow { (略) private: QPixmap pixmap; QGraphicsScene scene;
これを実行すると、ファイルダイアログを開いて画面に表示、までできました。 やっつけなので諸々問題はありますが、驚くべきコード量の少なさ!
終わりに
いかがでしょうか。Windowsでここまで簡単にGUIアプリが作成できるフリーの開発環境は 無かったのではないでしょうか。少なくとも導入は圧倒的に簡単だと思います。 (Visual Studio Express のことはあえてここでは触れません(って触れてるじゃん))。
Qt Creator は非常にキビキビと軽快に動きます。コード補完(Ctrl+Space)も利きますし、ヘルプが 一体型なのも地味に便利です。
リファクタリングや整形などはEclipse+CDTに一日の長があるようですが、UIを配置して 右クリック→Go to slot でコードを書くだけ、というスムーズな連携は、Eclipce+CDT+Qtな 環境では味わえませんでした。DelphiやVisual Basicを思わせる軽快さだと思います。
最後にリンク集を張っておきます。
付属やオンラインのドキュメント以外にも、Qt4に関する書籍は何冊か出ています。私は「入門Qt4プログラミング」 で勉強しています。この手の入門書にしては読みやすいほうだと思います。