Jun 272012
 

動作確認環境:Qt 4.8.1 / Qt Creator 2.4.1 / Windows XP

前回作成したQMLのボタンは、必要最低限の動作しかしていなかった。
今回はもう少しボタンらしい見た目にしてゆく。

QMLは以下のようになった。

ボタンコンポーネントとして汎用的に使えるよう、6-9行目でプロパティの定義をしている。
こうすることで、外部からボタンの枠線の色やラベルの文字列の設定を行える。

28行目、29行目ではMouseAreaのonEnteredイベントとonExitイベントに呼応して枠線の色を変えている。
hoveredBorderColorはプロパティとして定義された色で、デフォルトはgoldとなっている。
borderColorも同様にプロパティとして定義された色で、デフォルトはwhiteとしている。

32行目以降に2つのGradientを定義している。これらはボタンの表面のグラデーションに使うことができ、
ここでは通常時のグラデーションと、ボタンが押されたときのグラデーションを定義してある。

最後の46行目で、MouseAreaの状態によってグラデーションを切り替えている。
このようにQMLで定義したボタンは以下のような外観となる。

平常時
ホバー時
クリック時

最後に、このボタンを使用したQMLの例を示す。

このQMLアプリケーションを実行すると、以下のようになる。

Apr 232012
 

動作確認環境:Qt 4.8.1 / Qt Creator 2.4.1 / Windows XP

Qt Quickアプリケーションの作り方を学んでいくにあたって、まずはボタンを作ってみることにする。
はじめに、QtCreatorで Qt Quickアプリケーション のプロジェクトを作成する。
次に、そのプロジェクトにQMLファイルを新規作成する。名前は「Button.qml」とする。
QMLは以下のように記述する。

最もシンプルに書くならばこのような感じになるだろう。
4行目でRectangleエレメントの中にbuttonoClick()というシグナルを定義し、
6行目でMouseAreaが全体に有効になるよう配置する。
MouseAreaがクリックされるとbuttonClick()シグナルが発生するようになっている。

それでは、このボタンをメイン側で使ってみる。
QtCreaterでQt Quickのプロジェクトを作った場合はmain.qmlというファイルができているはずなので、
そこへ以下のように記述する。

このように、同じフォルダ内にqmlファイルがある場合は、その名前を宣言して配置することができる。
Button.qml内でbuttonClick()というシグナルを定義しておいたので、
onButtonClickという名前のプロパティが使えるようになっている。
ここにボタンが押されたときの処理を記述すれば良い。
今回は単純にログにメッセージを出力しているだけである。

このプログラムを実行すると以下のようになる。

緑色の四角形に表示された部分をマウスでクリックすると
コンソールログに「button clicked!」と表示されるだろう。