こんにちは。田原です。今月からC++講座をゆるりとですが再開したいと思います。

今回は、Windows向けのQtのインストール方法を詳しく解説します。
WindowsのQtが対応しているC++コンパイラはVC++(msvc)とMinGWがありますが、MinGW版はWebEngineに対応していません。インターネット上での情報もVC++の方が多いようです。更にMinGWはlinux上のgccをWindows向けに修正したものなのでlinuxとWindowsの「文化」の相違の吸収のために少し無理している部分があります。(特に日本語処理)そこで当講座ではWindowsはmsvcを使うことにします。

さて、去年Visual Studio 2019がリリースされました。しかし、Qtの公式ビルド版はまだ2017までの対応です。
しかし、マイクロソフトのサイトのC++Visual Studio 2015、2017、および2019間のバイナリの互換性によると2015, 2017, 2019はバイナリの互換性があるようです。ならば、ここは最新版の2019で進めてみようと思います。

1.Visual Studioの準備

手順としては簡単で下記3つです。

  1. ダウンロードする
  2. インストールする
  3. Visual Studioへサインインする

Visual Studioを制限なく使うためにはサインインする必要があるようです。2017の時は、明確にCommunityの30日の評価期間の制限がなくなる旨の記載があったのですが、今回は少し曖昧ですね。何か問題がでてからのサインインでも良いかもしれません。

なお、サインインする場合は「ユーザーを最も的確に表す職場や学校のアカウント」、もしくは、「マイクロソフト・アカウント」が必要です。
前者については、私も良く分かりませんので所属する職場や会社の管理者にご確認下さい。
後者については、無料でマイクロソフト・アカウントを取得できますので、取得してからインストール作業を初めて下さい。

1-1. Visual Studio 2019 Communityのダウンロード

1-1-1.マイクロソフトのサイトへ行きます。

久しぶりにIntenetExplorerで見に行くと画面が崩れていましたので、Google Chromeを使って解説しています。

1-1-2.ダウンロードが始まります。

「コミュニティ」の「無料ダウンロード」をクリックして下さい。初期インストーラのダウンロードが始まります。ダウンロードが終わったら左下をクリックしてインストールして下さい。

1-2. Visual Studio 2019 Communityのインストール

続けてインストールします。

1-2-1.直ぐにユーザアカウント制御がインストール許可を求めてくるので許可して下さい。

1-2-2.続行をクリックすると「オンライン・インストーラ」のダウンロードが始まります。

1-2-3.しばらくすると「オンライン・インストーラ」が起動するのでオプションを設定します。

「C++によるデスクトップ開発」を選択し、「インストール」をクリックして下さい。

1-2-4.インストールが終わるのを数分程待って下さい。

1-2-5.この画面が出たらインストール完了です。サインインに進みます。

 

1-3. サインイン

続けてVisual Studioへサインインします。

1-3-1.登録しておいたメール・アドレスを入力して下さい。

1-3-2.パスワードを聞かれますので入力して下さい。

1-3-3.そのまま2~3分程待って下さい。

1-3-4.Visual Studio 2019 Communityが起動します。

「コードなしで続行(W)→」をクリックするとVisual Studioが起動します。

以上でVisual Studioのインストール完了です。Visual Studioを終了して下さい。

2.Qtのインストール

手順としては簡単で下記3つです。

  1. ダウンロードする
  2. インストールする(Qt Accountを取得する)
  3. サンプルを1つ走らせてみる

2-1. インストーラをダウンロードする。

ダウンロード・ページのURLを見るとハッシュコードのような文字列が入っているので、サイトが更新されるとURLも変わってしまいそうな感じがしますので、トップページからの手順で示します。

2-1-1.Qtの公式サイトへ行きます。

2-1-2.ページを辿ってダウンロード・ページまで進みます。

ページ右上の「Download. Try. Buy.」をクリックから、次々と進んで下さい。

2-1-3.「Download」をクリックしてダウンロードします。

この画面の「Download」をクリックするとダウンロードが始まります。

2-2. Qtのインストール

2-2-1. Qt Accountを取得します。

2020年2月からオープンソース版Qtのインストール/アップデートの際にもQt Account登録が必要になりました。費用は請求されないようなので登録しましょう。
インストーラからも登録できるのですが、ここは説明の都合上、ダウンロードを待っている間にQtのトップページの右下にある「Sign In」→「Create Qt Account」から登録します。(有効なeメール・アドレスが必要です。)

ご自身のメール・アドレスを入力し、Qtアカウントに設定するパスワードを決め、各フィールドに入力して「Creat Qt Account」ボタンを押すとしばらくしてメールが届きますので、その中のリンクを開くことで登録できます。

2-2-2. インストーラを起動します。

ダウンロードが終わったら左下をクリックしてインストーラを起動し「Next」をクリックして下さい。

先程取得したQt Accountのメール・アドレスとパスワードを入力して再度「Next」をクリックして先へ進めます。

2-2-3. インストール先等を指定しながら進めて下さい。

途中、メタ情報のダウンロード等で数分待たされることがありますが気長に待って下さい。

2-2-4. いよいよ具体的にインストールするコンポーネントを選択します。

当講座では最新版(現在はQt 5.14.2)のMSVC 2017 64-bitとQt WebEngineを使います。
またQtのドキュメントは不足している場合もあり、時としてソースを見て詳細を調べることもあります。ですのでディスクスペースに余裕がある時はSourcesもインストールしておくことをお勧め致します。

2-2-5. そのままインストールを進めて下さい。

「Launch Qt Creator」をチェックしたまま「完了」をクリックしてQtCreatorを起動して下さい。

2-2-6. Visual Studio 2019用に設定を追加します。

QtCreatorは通常はVisual Studioを自動的に見つけて自動設定してくれるのですが、まだVisual Studio 2019 に対応していないせいか、コンパイラを手動で指定する必要があります。
そこで、QtCreatorが起動したら上記に続けて左下に出ている「Adjust usage statistics settings」をクリックするか、「ツール(T)」メニューの「オプション(O)…」をクリックして設定画面を開いて下さい。

そして、「Kits」を選択してキットタブを開いて下さい。

最後に、自動検出された「Desktop Qt 5.14.2 MSVC2019 64bit(既定)」のComplier欄のCとC++をコンボボックスで選択して下さい。

これでインストール完了です。

2-3. サンプルを1つ走らせてみる(Qt Quick vs Qt Widgets)

Qtは、GUI開発用のフレームワークとして大きく2つ持っています。Qt WidgetsとQtQuickです。Qt Widgetsは古くからあります。Qt Quickは比較的新しいです。
それぞれ一長一短あるので悩ましいのですが、当講座では新しい方のQt Quickをメインに解説していきたいと思います。

さて、Qtには大量にサンプルが同梱されていますので、多くの場合サンプル・ソースがあります。今回はQt Quick上で実装されたWebEngineのデモを走らせてみます。
WebEngineはVisual C#等にあるWebBrowserコントロールのようなもので、要するにQt内蔵のWebBrowserです。PC版ではGoogle ChromeやMicrosoft EdgeのベースとなっているChromiumが採用されています。

2-3-1. サンプルを選択し、Configureして、実行します。

QtCreatorで「ようこそ」→「サンプル」→ Qtのバージョン選択 → 検索文字列(webengine quick)を指定し、最後に「WebEngine Quick Nano …」と書かれているサンプルをクリックします。

Configureします。

次のような画面が開きます。サンプルの説明を必要に応じて読んだら閉じて下さい。そして「Configure Project」します。

最後にビルドして実行します。

単に Run ボタンを押して下さい。ビルドされ、Nano Browserサンプルが起動します。

Nano Browserサンプルは普通にタグ・ブラウザです。機能は豊富ではないですが、ブラウザとしての必須機能は実装されているようです。

Windowsでは、エラーがでてビルド出来ない場合があります
「エラー: cannot open C:\Users\<ユーザ名>AppData\Local\Temp\main.obj.7952.16.jom for write」のようなエラーがでてビルドできない場合、QtCreatorがあなたのユーザ名を処理できません。

ある程度慣れた方なら、海外のツールを日本語Windowsで使う際に時々はまっていると思いますが、残念ながらQtCreatorもその例外ではないようです。漢字(所謂全角文字)を含むユーザ名を使っていると、Tempファイルのパスに漢字が含まれます。そのようなパスを適切に扱えないため、QtCreatorでプログラムをビルドできないことがあります。(ビルドする際に、一時ファイルをTempフォルダに保存するようなのですが、その時エラーが出てビルドできないのです。)
そのような時は日本語を含まないユーザ名のアカウントを作成し、そのアカウントでQtCreatorをお使い下さい。(ユーザ名を変更するだけでは残念ながらダメです。ユーザ名を変更してもTempフォルダのパスは変更されないためです。)

3.最後に

今回はWindows向けのQtを使えるようにするところまで解説してみました。

ところで、本文でも述べたようにGUIのフレームワークとしてはQt Quickを今後も用いていく予定です。
Qt QuickはQML(Qt Modeling Language)というドキュメント記述言語で記述されたページを表示するある種のブラウザのようなものです。ChromeなどのWebブラウザがHTMLで記述されたページを表示するのと似ています。
QMLはHTML同様JavaScriptを使えます。QMLの構文はHTMLとは全く異なり、jsonのような構文ですので、各種エディタの {} ジャンプ機能等を使うこともできメンテナンスしやすくC++のコードに慣れている人にとってはHTMLより格段に見やすいです。
しかし、超強力なHTMLに比べると機能は貧弱です。Qt Widgetsに比べても貧弱かも知れません。
C++との親和性は圧倒的にQt Widgetsの方が優れています。Qt Quickは一種のブラウザ上で動くため、ある種のインタプリタです。それとC++のインタフェースにはそれなりに手間がかかりるのです。

こうしてみると、Qt Widgetsの方が好ましいので本当に悩ましいのですがQt WidgetsはWindowsにおける高解像度ディスプレイ対応が貧弱です。近年、MS Surface等、高解像度ディスプレイのPCが増えているのですが、Qt Widgetsで完全に対応するには大きな手間を要します。
また、スマホへ移植する場合、Qt Widgetsでは画面サイズの柔軟な変更に対応するためには大きな手間を要します。(手抜き対応する手段もありますが制約があります。)

このようになかなか悩ましいのですが、表現力が必要な部分はWebEngineで記述し、そうでもない部分をQMLで記述することでお互いの得手不得手を補えるというメリットはそれなりに有用と思いますので、当講座ではQt QUickを使用し、時にはWebEngineを使っていきたいと思います。

それでは今回はこれで終わります。お疲れさまでした。