目 次
1. 概要
1
1.1 はじめに...1
1.2 開発言語について ...1
1.3 Qt の GUI 開発環境について...1
2. Qt Creator の概要
2
2.1 システム概要 ...2
2.2 Qt システム構成 ...2
3. Qt Creator のインストール
3
4. Qt Creator によるサンプルアプリ作成
4
4.1 Qt Creator の起動 ...4
4.2 プロジェクトの作成 ...5
4.3 クロスコンパイル設定 ...8
4.4 サンプル GUI アプリ作成...13
4.5 サンプルの実行 ...21
5. 関連情報
22
Rev1.0 2013/01/31
XG シリーズ
Qt プログラミング
1. 概要
1.1 はじめに
Qt は主に Unix/Linux で利用されている GUI ツールキットです。Windows でも利用することができ Linux と Windows 両方 に対応するアプリケーション開発などでしばしば利用されています。また、組込み系のシステムの GUI としても利用されてい ます。 本ドキュメントでは、XG シリーズをターゲットとした Qt のアプリケーション開発方法を説明します。
1.2 開発言語について
Qt は C++によって開発されており、多くのアプリケーションが C++によって開発されています。また、多くのコミュニテ ィによって Qt バインディングが開発されており、多くの言語で Qt アプリケーションを開発することが可能です。本アプリケ ーションノートでは Qt Creator を使った、XG シリーズ用のクロスアプリ開発について解説します。 Qt はバインディングを利用することによって他の多くの言語で開発することも可能です。各種言語で Qt を利用するときはそ の言語で必要となるバインディングのためのライブラリ等をターゲットインストールすることが必要となります。 本ドキュメントでは、Qt Creator および C++での開発を前提としたアプリケーション開発について説明します。 その他の言語での詳細については、一般書籍やインターネットから多くの情報を得られますので、それらを参考にしてくださ い。1.3 Qt の GUI 開発環境について
Qt Creator は Qt 用の GUI 開発環境です。Qt Creator は Ubuntu ソフトウェアセンターに登録されています。通常はそのま まインストールすることができますが、最新版を利用したい場合は別途インストール作業が必要となります。
本ドキュメントでは、アプリケーションノート『Qt のためのルートファイルシステム作成方法』が 先に行っていることが前提となりますので、もしお読みでない場合は、先にそちらをお読みください。
2. Qt Creator の概要
2.1 システム概要
Qt アプリを実行するには、バックエンドとして X.org や Kdrive(Xfbdev)、DirectFB、framebuffer を使用するなどの方法が あります。 これらのどのバックエンドと組み合わせるかは、アプリケーションの稼動環境に応じて選択することになります。2.2 Qt システム構成
Qt を動かすための構成は幾つかありますが、ここでは DirectFB をバックエンドにした構成を例にとって説明します。アプリ の稼動環境がすべて Qt による独自開発のアプリケーションの場合は、DirectFB をバックエンドにした構成のほうが GUI の動 作が速くなります。X11 を前提としたアプリを移植する場合は Xfbdev をバックエンドにしたほうが便利です。(Xfbdev の場 合も手順はほぼ同じです。アプリをコンパイルしたときに使ったルートファイルシステムの GUI 構成と、XG シリーズの GUI アプリ実行環境が異なっていると実行時にライブラリが見つからないなどのエラーが発生します) Fig 2.2-1 Qt システム例 XG シリーズボード + LCD タッチパネルキット Qt アプリケーション + Qt DirectFB Linux カーネル ソフト ウェア ハード ウェア3. Qt Creator のインストール
Qt および Qt Creator をインストールするにはターミナルを開き以下のコマンドを入力します。
$
sudo apt-get install qtcreator
Ubuntu メニューの「アプリケーション」-「プログラミング」に Qt Creator が登録されています。
Ubuntu10.04 でインストールされる Qt Creator は 1.31(Qt 4.6.2)です。XG シリーズの Qt は 4.7.4 です。4.7 以降に追加された、QML などの機能を活用するには、Ubuntu 側を最新の Qt & Qt Creator にする必要があります。
入力
4. Qt Creator によるサンプルアプリ作成
4.1 Qt Creator の起動
4.2 プロジェクトの作成
Qt アプリケーションを作成するには、最初に Qt プロジェクトを以下の手順で作成します。 ① Qt Creator メニューの「ファイル」-「ファイル/プロジェクトの新規作成」にて新規作成ダイアログを開きます。 プロジェクトの中の「Qt4 GUI アプリケーション」を選択し「OK」ボタンをクリックします。 ② 名前に「qt-test1」、パスは参照ボタンをクリックしてディレクトリ「/home/guest/workspace」を作成し 「次へ」ボタンをクリックします。プロジェクトは「/home/guest/workspace/qt-test1」に作成されます。③ QtCore、QtGui 以外にアプリケーションで必要とされるモジュールにチェックを入れ「次へ」ボタンをクリックします。 例題では何もチェックせずにそのまま「次へ」ボタンをクリックします。
④ クラス情報にて、クラス名、ヘッダーファイル、ソースファイル、フォームファイルを設定します。ここではデフォルト のまま「次へ」ボタンをクリックします。
⑤ プロジェクトに作成されるファイル一覧が表示されます。確認の上「完了」ボタンをクリックし、プロジェクトの作成を 完了します。
4.3 クロスコンパイル設定
Qt アプリケーションのクロスコンパイル環境の設定をします。
① Qt Creator メニューの「ツール」-「オプション」にてオプションダイアログを開きます。Qt4 の左側の「+」を クリックして展開し「Qt Versions」を選択します。
② Qt バージョンの自動検出には Ubuntu の Qt が検出されています。ARM 用の qmake を指定するため、マニュアルを 選択した後、右上隅の「+」ボタンをクリックします。
③ バージョン名のところは何も入力しないで、QMake パスの参照ボタンをクリックし、各開発キットの該当する qmake を 選択します。 選択する qmake のフルパスは、開発キットごとに異なりますので下記表を参照してください。 指定した qmake が認識されると、自動的にバージョン名に「4.7.4」がセットされます。 ④ 次にデフォルト Qt バージョンは「4.7.4」を選択します。(複数の XG シリーズ開発をする場合は、バージョン名を XG-3730 4.7.4 のように分かりやすい名前に変更します) 開発キット qmake のパス LK-1808-A01(XG-1808) ~/xg1808/buildroot-2011.11-xg1808-X.X/output/host/usr/bin/qmake LK-3517-A01(XG-3517) ~/xg3517-lk/buildroot-2011.11-xg3517-X.X/output/host/usr/bin/qmake LK-3730-A01(XG-3730) ~/xg3730/buildroot-2011.11-xg3730-X.X/output/host/usr/bin/qmake
⑤ デバッグヘルパに赤の「×」が付いているときは「リビルド」ボタンをクリックします。
⑥ 最後に「適用」ボタンをクリックし、「OK」ボタンをクリックしてオプションダイアログを閉じます。
ビルド後、出来上がった実行可能ファイルを/nfs ディレクトリに自動的にコピーするように設定します。 ① プロジェクトをクリックしてプロジェクト設定の編集に切り替えます。
② 「ビルドステップを追加」ボタンをクリックすると、メニューが表れますので「独自プロセスステップ」を選択します。
④ 独自プロセスの「独自プロセスステップを有効にする」にチェックを入れ、名前に「qt-test1 を/nfs にコピー」を、 コマンドに「cp」、コマンド引数に「./gt-test1 /nfs」と入力します。 ⑤ 編集ボタンをクリックして、編集モードに戻します。 個々のプロジェクトで使用する qmake を固定にするときは「プロジェクト」-「概要」の「詳細を表 示」ボタンをクリックして概要を展開しデフォルト Qt バージョンから、特定の Qt バージョンに変更 します。
Ubuntu 上で動作確認するときは「PATH に含まれる Qt」を設定します。qmake を変更したときは「す べてリビルド」してください。
4.4 サンプル GUI アプリ作成
GUI のデザインは次のような手順にて行います。① 「qt-test1」-「フォーム」を展開し「mainwindo.ui」をダブルクリックし GUI デザイン用に切り替えます。
③ 配置したラベルを選択し、プロパティの「QWidget」ー「geometry」を展開し、 X に 100、Y に 50、Width に 400、 Height に 60 をセットします。
⑤ プロパティの「QWidget」-「font」-「Point Size」を 40 にします。
⑥ 次にアプリケーションの終了ボタンを追加します。Buttons の「Push Button」をフォームの右下端にドラッグ&ド ロップで配置します。
⑦ 配置したラベルを選択し、プロパティの「QWidget」-「geometry」を展開し、 X に 420、Y に 250、Width に 160、 Height に 80 をセットします。
⑧ プロパティにて QObject の Object Name を「btnQuit」に、QAbstructButton の Text プロパティを「終了」に します。
⑨ プロパティの「QWidget」-「font」-「Point Size」を 40 にします。
⑩ Quit ボタンをタップしたときに、qt-test1 アプリケーションが終了するようします。そのためには btnQuit にてマウス 右ボタンをクリックしポップアップメニューの「Go to slot…」を選択します。
⑪ ここでは単にタップ(クリック)するだけなので、「clicked()」を選択し「OK」ボタンをクリックします。
⑫ 自動的にコードエディタに切り替わり「MainWindow::on_btnQuit_clicked()」が自動的に生成されますので、その中に 実際の処理のコードを記述します。ここではアプリケーションを終了するために、以下のコードを入力します。
⑬ Qt アプリケーションのビルドは、Qt Creator メニュー「ビルド」-「プロジェクト”qt-test1”をビルド」を選択しビル ドを開始します。
保存してないファイルがあるときは、以下のように問い合わせがあります。その場合は「すべて保存」をクリックします。
ビルドが正常に終了すると、ディレクトリ「/nfs」に「qt-test1」がコピーされます。 エラーが無いときは次のように、画面左下のビルドの部分が緑色になります。
4.5 サンプルの実行
ビルドが正常に終わると開発 Linux サーバの/nfsディレクトリに実行可能なアプリケーションファイルをコピーされています。 ターゲット側の XG ボードで NFS マウントしてあればそのまま、/mnt/nfs ディレクトリに移動して実行する事ができます。 ① 開発用 PC の NFS サーバに接続してないときは、mount します。 /etc/init.d に「K95debug」スクリプトがある場合は#
/etc/init.d/K95debug start
コマンドで直接 NFS マウントする場合は以下のようにします。#
mount -t nfs -o nolock 192.168.128.201:/nfs /mnt/nfs
② qt-test1 が存在することを確認します。#
cd /mnt/nfs
#
ls -alg
total 280
drwxr-xr-x 2 root 4096 Nov 26 2012 .
drwxrwxrwx 9 root 4096 Nov 26 2012 ..
-rwxr-xr-x 1 root 275164 Nov 26 2012 qt-test1
③ qt-test1 を実行します。
#
./qt-test1 -qws
④ 次のような画面が表示され「終了」ボタンをタッチすると終了します。 入力 入力 入力 入力 入力5. 関連情報
Qt Creator に関しての情報は以下の書籍および、サイトが参考になります。 名前 著者 出版社 実践 Qt プログラミング Mark Summerfield オライリージャパン Qt プログラミング入門 - 使いやすいフレームワークを基礎から解説 津田 信秀 工学社 サイト名 URL digia http://www.digia.com Qt http://qt.digia.com Qt 開発ツール http://qt.digia.com/Product/Developer-Tools/ Qt wiki(日本語) http://qt-project.org/wiki/Wiki_Home_Japanese Qt Creator 日本語化プロジェクト http://qt-creator-jp.sourceforge.jp/ Table 5-2 参考 Web サイト Table 5-1 参考書籍商標について
・Windows®の正式名称は、Microsoft®Windows®Operating System です。
Microsoft、Windows、Windows NT は、米国 Microsoft Corporation.の米国およびその他の国における商標または登録商標です。 Windows®7、Windows®Vista、Windows®XP は、米国 Microsoft Corporation.の商品名称です。
本文書では下記のように省略して記載している場合がございます。ご了承ください。 Windows®7 は、Windows 7 もしくは Win7
Windows®Vista は、Windows Vista もしくは WinVista Windows®XP は、Windows XP もしくは WinXP
・その他の会社名、製品名は、各社の登録商標または商標です。