Qtアプリプログラミング入門(1)

はじめてのQt GUIアプリ開発

ここでは、下の図に示すBMIを計算するGUIアプリの作り方を説明します。

Qt Creatorを起動します。

メニューから[ファイル]-[新しいプロジェクト]を選択して、「新しいプロジェクト」ダイアログボックスを表示します。

「Qtウィジェットアプリケーション」を選択して[選択]ボタンでクリックします。

プロジェクトパス」というダイアログボックスが表示されるので、アプリの名前を入力して、 アプリを保存するディレクトリを指定し、[次へ]ボタンをクリックします。

次に表示される「ビルドシステムの定義」ではビルドシステムとして「CMake」を選んで[次へ]ボタンをクリックします。

「クラス情報」が表示されます。

特に変更する必要はないので、そのまま[次へ]ボタンをクリックします。

言語選択のダイアログボックスが表示されますので、「Japanese(Japan)」を選択しておきます。
このとき、リストを下までスクロールしなくても、[j]キーを押すと「Japanese(Japan)」が表示されます。

[次へ]ボタンをクリックします。「キットの選択」ダイアログボックスが表示されます。

ここでも特に変更する必要はないので、表示内容を確認したら[次へ]ボタンをクリックします。

「プロジェクト管理」ダイアログボックスが表示されます。

特に変更する必要はないので、表示内容を確認したら[完了]ボタンをクリックします。

プロジェクトのファイルが生成されます。

下のほうにいくつかのメッセージが表示されても、気にしなくてかまいません。 邪魔なら「今後このメッセージを表示しない」をクリックして消してかまいません。

「プロジェクト」で「Forms」-「mainwindow.ui」を表示してダブルクリックします。フォームデザイナーが表示されます。

フォームの境界をドラッグしてフォームの大きさを小さくしてから、フォームのwindowTitleプロパティを「bmi」に変更します。

「Display Widgets」の中の「Label」や「Double Spin Box」をドラッグしてフォームに配置します。

BMIアプリのウィジェット
ウィジェット名前プロパティ
QLabellabel_heightText身長(cm):
QDoubleSpinBoxSpin_height
QLabellabel_weightText体重(kg):
QDoubleSpinBoxSpin_weight
QLabellabel_bmiTextBMI=

身長のDouble Spin Boxをマウスの右ボタンでクリックしてコンテキストメニューを表示します。

「スロットへ移動...」をクリックします。スロットのリストが表示されます。

身長のQDoubleSpinBoxのvalueChanged(double)をクリックして[OK]をクリックします。

スロットの空のコードが表示されるので、次のようにコードを追加します。


    void MainWindow::on_Spin_height_valueChanged(double arg1)
    {
        ui->label_bmi->setText("BMI=" + calcBmi());
    }
  

同様に、体重のQDoubleSpinBoxのvalueChanged(double)をクリックして[OK]をクリックします。

スロットの空のコードが表示されるので、次のようにコードを追加します。


    void MainWindow::on_Spin_weight_valueChanged(double arg1)
    {
        ui->label_bmi->setText("BMI=" + calcBmi());
    }
  

上記のふたつのメンバー関数の前に次のメンバー関数のコードを追加します。


    QString MainWindow::calcBmi()
    {
        double h = ui->Spin_height->value();
        double w = ui->Spin_weight->value();
        double bmi = w / (h * h * 0.0001);
    
        return QString::number(bmi);
    }
  

左側の縦列の「編集」をクリックして、「プロジェクト」の中の「mainwindow.h」をダブルクリックします。

コードが表示されるので、最後の直前に2行のコードを追加します。


    private:
        QString calcBmi();
  

「プロジェクト」の中の「mainwindow.h」は最終的には次のようになります。


    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include 
    
    QT_BEGIN_NAMESPACE
    namespace Ui {
    class MainWindow;
    }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private slots:
        void on_Spin_height_valueChanged(double arg1);
    
        void on_Spin_weight_valueChanged(double arg1);
    
    private:
        Ui::MainWindow *ui;
    
    private:
        QString calcBmi();
    };
    #endif // MAINWINDOW_H
  

「プロジェクト」の中の「mainwindow.cpp」は次のようになります。


    #include "mainwindow.h"
    #include "./ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        ui->Spin_height->setMaximum(250.0);
        ui->Spin_height->setValue(170.0);
        ui->Spin_weight->setValue(60.0);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    QString MainWindow::calcBmi()
    {
        double h = ui->Spin_height->value();
        double w = ui->Spin_weight->value();
        double bmi = w / (h * h * 0.0001);
    
        return QString::number(bmi);
    }
    
    void MainWindow::on_Spin_height_valueChanged(double arg1)
    {
        ui->label_bmi->setText("BMI=" + calcBmi());
    }
    
    
    void MainWindow::on_Spin_weight_valueChanged(double arg1)
    {
        ui->label_bmi->setText("BMI=" + calcBmi());
    }
  

そのほかのファイルはそのままで構いません。


左側の縦列の▶をクリックして、ビルドして実行します。

このとき、ファイルが保存されていないというダイアログボックスが表示されたら、ビルド前にすべてのファイルを保存する」をチェックして、 [保存]をクリックします。


関連項目

Qtアプリプログラミング入門(1)


Qt目次 inserted by FC2 system