RaspbianでQt QuickのHello World
Hello Qt World on Raspbian
最も有名なシングルボードコンピューター・Raspberry PiにQtを導入してハローワールドプログラムを作ってみましょう。
Raspberry Piの公式OSであるRaspbianをインストールしてデスクトップが表示されたら、まずはターミナル(LXTerminal)を起動して、システムのアップデートを行います。アップデートが完了したら、必要に応じて再起動します。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update
続いて、Qtの開発環境を導入します。Qt公式サイトで配布されているのはLinux Intel 64bit向けなので、そこからのインストールはできません。
$ sudo apt-get install qt5-default
$ sudo apt-get install qtcreator
インストールが成功するとメインメニューの「プログラミング」にアプリが追加されます。
つづいてQt5およびQt QuickのSDKを導入すれば、最低限の環境が整います。
$sudo apt-get install qtbase5-dev
$sudo apt-get install qtdeclarative5-dev
RaspbianのメインメニューよりQt Creatorを起動したら、コンパイラの設定を行います。メニューの「ツール→オプション→ビルドと実行」を選び、「コンパイラ」タブから、CとC++のGCCをそれぞれ追加し、このようにパスを指定します。
C++ /usr/bin/g++
C /usr/bin/gcc
「キット」タブに移り、先ほど指定したコンパイラをそれぞれ割り当てます。
それではアプリを作ってみましょう。「ようこそ」画面を表示させたら、「新しいプロジェクト→Qt Quickアプリケーション」を選択します。
プロジェクト名以外は標準のままで設定を完了します。
QMLファイルはUWPアプリにおけるXAMLにあたり、このファイルにレイアウトやアニメーションルーチンなど、UI処理に係る事項を記述します。
JSONがモチーフになっているため、XMLよりも見た目が簡潔です。基本的なルールは下記の通りですが、property値やimportなどのより高度な使い方は追って説明します。
- プロパティの指定など、単一行で完結するのであれば、行末に「;」は不要
- イベントハンドラの関数は名称や丸かっこを省いた{}内で、JavaScriptによって処理内容を記述
- JavaScriptと同様、「function(){}」でQMLファイル内に外部関数を追加できる
- "qsTr"はリソース文字列を呼び出す関数。このキーが環境の言語に応じてQt Linguestツールで編集したテキストに置き換わる。
このプロジェクトではウィンドウとフォームのQMLが分離されています。プロジェクトから「MainForm.ui.qml」をダブルクリックして、UIデザイナーを起動してみましょう。
Rectangleは四角形を描画します。単純にグループを作成したいのであればItemを使うとよいでしょう。
MouseAreaはマウス操作のイベントを検知するコンポーネントです。もしマルチタッチ操作を検知したいのであればMouseAreaの代わりにMultiPointTouchAreaを使います。
TextEditにはテキストを入力できます。QMLでは基本的に入れ子にできるコンポーネントに制限はなく、このサンプルではmarginを負の値にした矩形がテキストボックスの中に配置されており、これが外枠のようにふるまっています。
textEditを選択し、「テキスト」のプロパティーを置き換えたら、メニューの「デバッグ」より「デバッグ開始」で、プログラムを実行してみます。
C++コードには全く手を加えていないので、この状態でコンパイルエラーが出るようであれば、コンパイラーのgccやQt SDKが正しくインストールされていない可能性があります。
2018/10/24