--- Вопрос ---
Я создаю компонент "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» содержит три «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"
}
}
Стандартный обработчик «onBtnClicked» по умолчанию в «TextBtn»должен срабатывать при нажатии одной из «TextBtn» в «MenuRow», но это не так.Что происходит?
Соответствующий документ qml находится здесь: http://doc.qt.nokia.com/4.7/gettingstartedqml.html#basic-component-a-button
--- Среда разработки ---
ОС: Ubuntu 10.04
Версия Qt: 4.7.0 (используйте «qt-sdk-linux-x86-opensource-2010.05.1.bin» для установки qt sdk по пути по умолчанию «$ HOME / qtsdk-2010.05 /»)
Beforeзапустив 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
, затем запускаю qml файлы с помощью «qmlviewer».
$ qmlviewer MenuRow.qml
Окно qmlviewer запускается и показывает «MenuRow».Ошибка не возникает.Я использую мышь, чтобы нажать «TextBtn» в «MenuRow», но ничего не происходит.(В терминале должно отображаться сообщение «нажата кнопка text0X».)
Я использую qmlviewer для запуска других примеров и демонстраций, они, кажется, работают хорошо.Я не знаю, почему этот пример не может работать.