覚え書きブログ

WindowsでGUIアプリケーション開発の覚え書き

WindowsC++環境で、無料でGUIアプリケーションを開発するためには、以下のような候補がある。

まず、.Netフレームワークは、下記のリンクからダウンロードできるVisual Studio Express/Community両環境で利用できる。

.NetフレームワークによるGUIアプリケーションの作成では、下図のようにVisual Studioでプロジェクトを作成する際に、「CLR」->「空のCLRプロジェクト」を選択する。
f:id:hirotaka_hachiya:20160410140853p:plain
そして、下図のように「ソリューションエクスプローラ」で右クリックし、「追加」->「新しい項目」を選択し、「UI」->「Windowsフォーム」を選択し、フォームを作成する。
f:id:hirotaka_hachiya:20160410141635p:plain
f:id:hirotaka_hachiya:20160410141721p:plain

ただし、このままではcppファイルが空でビルド出来ないので、下記のサイトなどを参考にcppファイルを記入しプロパティで設定を変更する必要がある。
qiita.comhttp://mcn-www.jwu.ac.jp/~yokamoto/openwww/vsg/VCpp2012FormApp/


ここで、Visual Studio Communityは、Visual Studio Professional相当の機能を無償で利用できるものであるが、商用では中小規模の企業や団体(PC台数250台未満かつ年商1億円未満の企業や団体。当該組織は5名まで利用可能)に限定されている。ちなみに、Visual Studio Expressは、大規模の企業と団体でも利用可能である。Visual Studio Communityは、Expressの全機能を備えているので、中小企業で利用するには、Visual Studio Communityがお勧め。GUIアプリケーションの観点では、MFCが利用できる点が大きい。

MFCによるGUIアプリケーションの作成では、下図のようにVisual Studio Communityでプロジェクトを作成する際に、「MFC」->「MFCアプリケーション」を選択する。f:id:hirotaka_hachiya:20160410151026p:plain

「アプリケーションの種類」にて、「ダイアログベース」を選択した場合は次のようなプロジェクトが作成される。
f:id:hirotaka_hachiya:20160410152650p:plain

Visual Studio Communityは、C#を用いたクロスプラットフォームを謳っていて、Windowsだけでなく、iOSAndroidのアプリ開発が可能となっている。しかし、C++ベースのGUIアプリケーション開発という観点においては、クロスプラットフォームに対応していない。つまり、上記で紹介したCLRMFCはあくまでもWindowsのみの対応となっている。

一方、C++ベースのGUIアプリケーション開発で、クロスプラットフォームに対応しているのは、Qtである。現在、Qtの最新バージョンは5.6で下記からダウンロードできる。
http://www.qt.io/

Qtには有料の商用ライセンスと、LPGLのオープンソースライセンスがある。ダウンロード時に、利用環境やLPGLライセンスに従うことができるかなどの質問に答える必要がある。インストーラを実行すると下図のような画面が表示されるので、5.6を選択してインストールする。
f:id:hirotaka_hachiya:20160410161951p:plain
f:id:hirotaka_hachiya:20160410162011p:plain

QtによるGUIアプリケーションの作成では、Qt_creatorを用いてGUIアプリケーションを開発する。GUIアプリケーションは、下図のように「Application」->「Qtウィジェットアプリケーション」を選択する。
f:id:hirotaka_hachiya:20160410163330p:plain
下図のように、使用するコンパイラの候補が表示されるので、選択する。
f:id:hirotaka_hachiya:20160410163551p:plain

GUIのデザインを編集するためには、下図のように、「フォーム」からuiファイルを選択し、「デザイン」ウィンドウを開く。
f:id:hirotaka_hachiya:20160410163843p:plain
f:id:hirotaka_hachiya:20160410163956p:plain

サンプルコードが豊富にあるので、参考にするとよい。