- -質問 - -
「TextBtn」コンポーネントを作成し、シグナル「btnClicked」を追加します。
TextBtn.qml
import Qt 4.7
Rectangle {
property alias btnText: showStr.text
width:100
height:30
border.color: "black"
border.width: 1
color: "white"
signal btnClicked()
//the default signal handler
onBtnClicked: console.log(btnText+" is clicked.")
MouseArea {
id: btnMouseArea
anchors.fill: parent
onClicked: btnClicked()
}
Text {
id: showStr
anchors.centerIn: parent
color: "black"
}
}
別のコンポーネント「MenuRow」には、次の 3 つの「TextBtn」が含まれています。
MenuRow.qml
import Qt 4.7
Row {
spacing: 5
TextBtn {
id: testBtn01
btnText: "test01"
}
TextBtn {
id: testBtn02
btnText: "test02"
}
TextBtn {
id: testBtn03
btnText: "test03"
}
}
「MenuRow」の「TextBtn」の 1 つがクリックされると、「TextBtn」のデフォルトの単一ハンドラー「onBtnClicked」がトリガーされるはずですが、トリガーされません。どうしたの?
関連する qml ドキュメントはこちら: http://doc.qt.nokia.com/4.7/gettingstartedqml.html#basic-component-a-button
- -開発環境 - -
OS: Ubuntu 10.04
Qt バージョン: 4.7.0 (「qt-sdk-linux-x86-opensource-2010.05.1.bin」を使用して、デフォルト パス「$HOME/qtsdk-2010.05/」に qt sdk をインストールします)
qml を実行する前に、ファイル「qtsetup.sh」をソースして関連するパスを設定します。
$ source qtsetup.sh
qtsetup.sh
QTDIR=$HOME/qtsdk-2010.05/qt/
PATH=$PATH:$QTDIR/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
次に、「qmlviewer」でqmlファイルを実行します。
$ qmlviewer MenuRow.qml
qmlviewer ウィンドウがトリガーされ、「MenuRow」が表示されます。エラーは発生しません。「MenuRow」の「TextBtn」をマウスでクリックしても何も起こりません。(ターミナルに「text0Xがクリックされました」というメッセージが表示されるはずです。)
qmlviewer を使用して他の例やデモを実行していますが、うまく機能しているようです。この例が機能しない理由がわかりません。