Linux Mint 21 – Qt Creatorでですくとっぷあぷりをつくってみた

前回の続きである。プロジェクトファイルは作成できたので、簡単なデスクトップアプリを作成してみよう。作成するアプリは、ボタンをクリックしたら、“Hello, World!”と表示させるだけのものである。これは、お決まりの約束みたいなものだ。どのプログラミング入門でも、必ずといってよいほどコードが掲載されている。ただし、今回は、GUIなので、“Hello, World!”と出力させることはできないので、LineEditコンポーネントに文字をセットしてみることにする。

プロジェクトが作成できた

GUIの作成

プロジェクト欄にある「mainwindow.ui」をダブルクリックして、GUI編集モードにする。

GUI編集モード

Windowsが表示されている。このウィンドウにコンポーネントを配置していく。コンポーネントは、左側のパネルのカテゴリーの中から選択して配置していく、なお、Visual Studioのように、整列させるためのガイドラインは表示されない。整列するには右側のプロパティgeometryから座標を入力して配置する。


Windowsのタイトルとサイズを変更

このままだと、大きすぎるので適当なサイズに変更する。

プロパティ名内容
geometry320
高さ200
windowTitleHello

コンポーネントの配置

配置する前に、画面下部の部分(グリッドが表示されていない)を右クリックして、ステータスバーおよびメニューバー(ここに入力部分)を削除しておこう。

配置するコンポーネントは3つだ。PushButtonが2つ、LineEditが1つである。左側のカテゴリーのButtonsおよびInput WidgetからPushButtonおよびLineEditをドラッグして配置する。

コンポーネント名オブジェクト名プロパティ内容
PushButtonDisplayButtongeometryX140
Y170
text表示
PushButton_2CloseButtongeometryX230
Y170
text閉じる
LineEditMessageEditgeometryX10
Y20
readOnlyTrue(チェックを入れる)

配置してプロパティを設定し終わったのが、以下の画面である。

コンポーネントの配置と設定が終了した

「ビルド(B)」→「実行」を選択する。エラーが表示されなければ、以下のように表示されるはずだ。

実行画面

ウィンドウはタイトルバーを除いたサイズであり、メニューバーを配置したまま、コンポーネントを配置すると、ボタンとウィンドウ下部に隙間ができてしまう。これを解消するには、あらかじめメニューバーを削除しておいてコンポーネントを配置し、あとからメニューバーを追加するとよい。ちょっとした工夫が必要だ。


イベントの実装

2つのボタンにイベントを実装する。最初に[閉じる]ボタンにイベントを実装しよう。ボタン上で右クリックして、「スロットへ移動…」を選択する。

イベントの設定

「Clicked()」が選択されていることを確認して、[OK]をクリックする。コード記述画面になるので、以下のコードを記述しよう。

exit(0);

これは、[閉じる]ボタンがクリックされたら、ウィンドウを閉じるという動作をするという意味になる。

ウィンドウを閉じるために、コードを記述したが、この程度であればコードを記述しなくても実装することができる。デザイン画面で、上部にある小さなアイコンの左から2つ目のアイコン(シグナル/スロットの編集)をクリックする。クリックしたら[閉じる]ボタンの上にマウスを重ね、ボタンを押したまま、適当な位置までドラッグする。

シグナル/スロットの編集

次のようなダイアログが表示されるので、左側の枠から“Clicked()”を選択し、“QWidget から継承したシグナルとスロットを表示する”にチェックを入れる。右側の枠から“Close()”を選択して[OK]をクリックすればよい。

シグナル/スロットの接続設定

シグナル/スロットは非常に便利な機能だが、全てに対応していない。

次は[表示]ボタンにコードを記述しよう。

ui->MassageEdit->setText("Hello, World!");

コードを記述したら、実行してみて、[表示]ボタンをクリックして、LineEdit内に“Hello, World!”が表示されたら、OKである。

Hello, World!が表示された

終わりだよ

これで終わりである。GUIデスクトップアプリを作るのは、なかなか楽しいものである。今やWebへシフトしているが、GUIツールを作成するには、こういったRADツールがあると便利なのである。今回作成したのは、非常にシンプルなアプリだが、様々なコンポーネントと組み合わせて、実用性のアプリを作ることができるのである。

Qt Creatorには、Androidアプリ(要Android Studio)も作成できるようではある。また、C/C++だけではなく、Pythonでもアプリは作れるようなので、興味を持ったら挑戦してみるとよい。


追記 (2022/09/14)
hello-projectとしてGitHubにアップロードしました。ただし、少し改変してあります。

改変内容:
・クリアボタンの追加(シグナル/スロット接続)
・LineEditのXを10→20に変更