ここでは、下の図に示すBMIを計算するGUIアプリの作り方を説明します。
Qt Creatorを起動します。
メニューから[ファイル]-[新しいプロジェクト]を選択して、「新しいプロジェクト」ダイアログボックスを表示します。
「Qtウィジェットアプリケーション」を選択して[選択]ボタンでクリックします。
プロジェクトパス」というダイアログボックスが表示されるので、アプリの名前を入力して、 アプリを保存するディレクトリを指定し、[次へ]ボタンをクリックします。
次に表示される「ビルドシステムの定義」ではビルドシステムとして「CMake」を選んで[次へ]ボタンをクリックします。
「クラス情報」が表示されます。
特に変更する必要はないので、そのまま[次へ]ボタンをクリックします。
言語選択のダイアログボックスが表示されますので、「Japanese(Japan)」を選択しておきます。
このとき、リストを下までスクロールしなくても、[j]キーを押すと「Japanese(Japan)」が表示されます。
[次へ]ボタンをクリックします。「キットの選択」ダイアログボックスが表示されます。
ここでも特に変更する必要はないので、表示内容を確認したら[次へ]ボタンをクリックします。
「プロジェクト管理」ダイアログボックスが表示されます。
特に変更する必要はないので、表示内容を確認したら[完了]ボタンをクリックします。
プロジェクトのファイルが生成されます。
下のほうにいくつかのメッセージが表示されても、気にしなくてかまいません。 邪魔なら「今後このメッセージを表示しない」をクリックして消してかまいません。
「プロジェクト」で「Forms」-「mainwindow.ui」を表示してダブルクリックします。フォームデザイナーが表示されます。
フォームの境界をドラッグしてフォームの大きさを小さくしてから、フォームのwindowTitleプロパティを「bmi」に変更します。
「Display Widgets」の中の「Label」や「Double Spin Box」をドラッグしてフォームに配置します。
ウィジェット | 名前 | プロパティ | 値 |
---|---|---|---|
QLabel | label_height | Text | 身長(cm): |
QDoubleSpinBox | Spin_height | ||
QLabel | label_weight | Text | 体重(kg): |
QDoubleSpinBox | Spin_weight | ||
QLabel | label_bmi | Text | BMI= |
身長の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());
}
そのほかのファイルはそのままで構いません。
左側の縦列の▶をクリックして、ビルドして実行します。
このとき、ファイルが保存されていないというダイアログボックスが表示されたら、ビルド前にすべてのファイルを保存する」をチェックして、 [保存]をクリックします。