logo

C++ による GUI プログラミングの概要

C++ では、ユーザーが優れたグラフィックスを使用して作業できる最新のアプリケーション開発において、グラフィカル ユーザー インターフェイス (GUI) プログラミングが重要です。 C++ は一般的にシステム プログラミングやゲーム作成と関連付けられていますが、GUI 作成の優れた代替手段となる可能性があります。この記事では、C++ での GUI プログラミング、C++ 用の一般的な GUI ライブラリ、および C++ で基本的な GUI アプリケーションを作成する方法について説明します。

前提条件: C++ の基礎、C++ OOP、一部の GUI ライブラリ。



GUI(グラフィカルユーザーインターフェース)とは何ですか?

グラフィカル ユーザー インターフェイス (GUI) は、ウィンドウ、テキスト ボックス、ボタンなどのグラフィックを使用して提供される視覚的なアプリケーション インターフェイスであり、ユーザーはこれらを通じてソフトウェアと通信できます。 GUI は、ユーザーがキーボードだけに頼らずにマウスやタッチスクリーンなどの他の入力デバイスを使用できるため、コマンド ライン インターフェイス (CLI) と比較して対話型で使いやすいプラットフォームを提供します。

GUI プログラミングの主な概念

グラフィカル ユーザー インターフェイス (GUI) には、すべて対話型のユーザー インターフェイス コンポーネントであるウィンドウ、ダイアログ、ボタンなどの設計が含まれます。次に、onClick、onHover などのイベント ハンドラーを使用してこれらのウィジェットを制御します。

GUI プログラミングの主な概念は次のとおりです。



ウィジェット

グラフィカル ユーザー インターフェイス (GUI) はウィジェットで構成されます。たとえば、これらにはボタン、テキストボックス、ラベルなどが含まれます。各ウィジェットのプロパティと動作は、アプリケーションの特定のニーズに従ってカスタマイズできます。通常、GUI ライブラリには次のウィジェットがあります。

  1. 窓: 内部に他のウィジェットをホストするトップレベルのウィンドウ フレーム。
  2. ボタン: クリックに関連付けられた何らかのイベントを持つクリック可能なボタン。
  3. ラベル: シンプルな読み取り専用テキスト
  4. チェックボックス : オンまたはオフにするオプションを提供するボックス。
  5. ラジオボタン: オンまたはオフのオプションを提供するボックスですが、グループ内で選択できるラジオ ボタンは 1 つだけです。
  6. ドロップダウン/コンボボックス : クリックするとドロップダウン メニューが開きます。未開封フォームでは表示できる項目は 1 つだけです。
  7. テキストボックス: 編集可能なテキスト領域。
  8. リストボックス: 複数の項目が含まれるボックスと、それらすべてを表示するためのスクロール バー。
  9. スライダー: アプリケーション内を移動するために使用されるナビゲーション ウィジェット。
  10. メニュー: 上部に表示されるメニューは、アプリケーション ユーザーにさまざまなオプションを提供します。
  11. ダイアログボックス: ウィンドウの上部に表示されるボックス。場合によっては通知を表示することもあります。
  12. グリッド: UIのレイアウト管理に使用されます。

レイアウト管理

GUI アプリケーションは、画面上に編成されたさまざまなウィジェットを備えた魅力的かつ効果的なユーザー インターフェイスを維持するために、さまざまなサイズや解像度などのさまざまな画面に合わせて最適化する必要があります。

イベント処理

GUI プログラミングでは、ボタンのクリックやキーの押下などのイベントが重要です。これらのイベントは、ユーザーのアクションを追跡できるようにアプリによって処理されます。さまざまなウィジェットに関連付けられたさまざまなイベントがあります。たとえば、クリック可能なボタンの場合、関連するイベントは次のとおりです。



  1. クリックイベント
  2. マウス移動イベント
  3. イベントに集中
  4. フォーカスアウトイベント

C++ 用の一般的な GUI ライブラリ

C++ には、GUI アプリケーションの開発に使用できる、プラットフォームに依存しない GUI ライブラリが多数あります。人気のあるものには次のようなものがあります。

  1. gtkmm
  2. Qt
  3. wxウィジェット
  4. 親愛なるイムグイ様

C++ GUI アプリケーションの例

以下のプログラムでは次のツールを使用します。

  1. Qtライブラリ : プログラムの GUI ライブラリ。
  2. Qt デザイナー: Qt 用のインタラクティブな GUI テンプレート デザイナー。
  3. Qt 作成者: Qt GUI アプリケーション用の IDE

ここでは、C++ と Qt を使用した GUI プログラミングの実際のケースを見ていきます。基本的な Hello World アプリケーションのボタンを開発します。ボタンをクリックすると、Hello World テキストが書かれたダイアログ ボックスが表示されます。次の手順を使用して実装します。

ステップ 1: Qt プロジェクトの作成

Qt Creator を開き、Qt ウィジェット アプリケーション タイプの新しいプロジェクトを作成します。名前を入力し、場所を選択すれば準備完了です。 Qt 作成者は、必要なすべてのファイルを含むプロジェクトを作成します。

プロジェクトの作成

ステップ 2: ウィンドウのデザイン

次にファイルを開きます メインウィンドウ.ui 。このファイルにはアプリケーションの UI が含まれています。先ほど開いたデザイナーを使用して、テキスト ラベルを 1 つ追加します。

これで、ファイルには次のコードが含まれるようになります。

メインウィンドウ.h

C++




#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>:> >Ui::MainWindow *ui;> };> #endif // MAINWINDOW_H>

インスタンスの

>

>

main.cpp

C++




#include 'mainwindow.h'> > #include> > int> main(>int> argc,>char> *argv[])> {> >QApplication a(argc, argv);> >MainWindow w;> >w.show();> >return> a.exec();> }>

>

>

メインウィンドウ.cpp

C++




git プル構文
#include 'mainwindow.h'> #include './ui_mainwindow.h'> > MainWindow::MainWindow(QWidget *parent)> >: QMainWindow(parent)> >, ui(>new> Ui::MainWindow)> {> >ui->setupUi(>>this>);> }> > MainWindow::~MainWindow()> {> >delete> ui;> }>

>

>

メインウィンドウ.ui

XML




xml version='1.0' encoding='UTF-8'?> メインウィンドウクラス> 0x>0歳>800幅>600高さ> 長方形> プロパティ> MainWindowsstring> プロパティ> 260倍>140y>81幅>71高さ> 長方形> プロパティ> Hello Worldstring> プロパティ> ウィジェット> ウィジェット> 0x>0歳>800幅>22高さ> 長方形> プロパティ> ウィジェット>ウィジェット> うい>>>

>

>

mainWindow.ui は XML で記述されていることに注意してください。これは、Qt が UI ファイルを XML で記述するためです。

ステップ 4: ビルドして実行する

シングルクリックで Qt Creator で Qt プロジェクトをビルドして実行できます。

出力

こんにちは世界

GUI アプリケーションの利点

GUI アプリケーションにはいくつかの利点があり、ユーザー エクスペリエンスの向上と開発の合理化に貢献します。

  • ユーザーフレンドリーなインターフェース: グラフィカル ユーザー インターフェイス (GUI) を使用すると、時間のかかる他のアプローチと比較して、ソフトウェア アプリケーションに対するシンプルで使いやすいアプローチが実現します。
  • 強化された対話性: これには、ボタン、ドロップダウン メニュー、チェックボックス、スライダーなどのインタラクティブな機能が含まれており、ユーザーが自分のエクスペリエンスを制御できるようになります。
  • クロスプラットフォーム互換性: Qt などの言語を使用すると、Windows、macOS、Linux 用の GUI アプリケーションを C++ で作成できます。
  • ラピッドプロトタイピング: GUI フレームワークには多くの GUI ビルダーと設計ツールが存在するため、インターフェイスの迅速なプロトタイピングが促進され、開発プロセス全体が高速化されます。