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します。

LGPL

Qt Creator,MinGW,Qt,がインストールされます。1.6GB消費とのこと。

LGPL

インストールが終了するとQtCreatorが起動します。おっと、右下にNOKIA印が付いたのですね。

Creator1

Hello,world!

まずプロジェクトを作成します。[File]-[New]から[Qt4 GUI Application]を選択します。

creator3

パスとプロジェクト名を入力します。

creator4

どのモジュールを追加するか聞かれますが、とりあえずデフォルトのままで行きます。

creator5

クラス名を聞かれます。まずは一番シンプルなQDialogを選びます。

creator6

ファイルがいくつか生成されますが、そのうちのdialog.uiをダブルクリックします。 GUIエディタ(かつてQt Designerという名前の単体アプリでした)が立ち上がります。

creator7

ウィンドウを適当に小さくして、Push Buttonを追加します。

creator8

今追加したPush Buttonを右クリックしてGo slot を選択します。

creator9

cliked()を選択してOkします。

creator10

すると、エディタにフォーカスが移動します。dialog.cppに Dialog::on_pushButton_clicked()が 追加され、メソッド内にカーソルが移動します。

creator11

ボタンが押されたらメッセージボックスを出すことにしましょう。 コードはこれだけです。

#include <QMessageBox>
void MainWindow::on_pushButton_clicked()
{
  QMessageBox::information(this,"Hello","Hello, World!");
}

creator12

Runボタンを押すと、ビルドが通り、ダイアログが表示されます。 ボタンを押すとメッセージが表示されました。すばらしくシンプルです。

creator13 creator14

※ Qt ではシグナル&スロットと呼ばれる機構でイベントなどのやり取りをするのですが、シグナルで 起動されるメソッドのことをスロットと呼びます。シグナルとスロットを接続するには、普通はconnect文を 記述するのですが、Qt Creatorの作成するプロジェクトでは、 on_送信元オブジェクト名_シグナル()という命名規則に則ったスロットに限っては自動的に接続されます。 この処理はui_dialog.cpp という、Creatorからは見えない(自動生成される)コードが 行っています。

画像ビューワを作ってみる

では次のアプリケーションを作ってみましょう。今度はファイルメニューから画像ファイルを選択すると 画面に表示するだけのアプリです。

[File]-[Session Manager]から新しいセッションを開き、同じく[File][New][Qt4 GUI Application]です。 今度はQMainWindowを選択します。

image1

mainwindow.uiにGraphics View を置きます。

image2

画面リサイズにも追従するようにしたいですよね。 ウィンドウの地べたを右クリックして、Layout -> Layout in a Grid を選択します。

image11

これでウィンドウいっぱいにGraphics Viewが広がります。 次にメニューバー。Type Hereと書かれている場所をクリックしてテキストを書き込むだけです。

&File とか&Openのように書くと、Alt+F, Alt+O がキーボードショートカットになります。

image6

メニューから呼ばれる動作は、ボタンなどのUIとは異なり、メニューをクリックして選択する以外の操作 (ツールバーとか、キーボードショートカットとか)からも呼ばれるので、メニューに縛られていません。 このような動作をアクションと呼びます。 [File][Open]を追加すると、action_Openというアクションが追加されます。

image7

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;

これを実行すると、ファイルダイアログを開いて画面に表示、までできました。 やっつけなので諸々問題はありますが、驚くべきコード量の少なさ!

image8

image9

image10

終わりに

いかがでしょうか。Windowsでここまで簡単にGUIアプリが作成できるフリーの開発環境は 無かったのではないでしょうか。少なくとも導入は圧倒的に簡単だと思います。 (Visual Studio Express のことはあえてここでは触れません(って触れてるじゃん))。

Qt Creator は非常にキビキビと軽快に動きます。コード補完(Ctrl+Space)も利きますし、ヘルプが 一体型なのも地味に便利です。

リファクタリングや整形などはEclipse+CDTに一日の長があるようですが、UIを配置して 右クリック→Go to slot でコードを書くだけ、というスムーズな連携は、Eclipce+CDT+Qtな 環境では味わえませんでした。DelphiやVisual Basicを思わせる軽快さだと思います。

最後にリンク集を張っておきます。

付属やオンラインのドキュメント以外にも、Qt4に関する書籍は何冊か出ています。私は「入門Qt4プログラミング」 で勉強しています。この手の入門書にしては読みやすいほうだと思います。