Обработчик сигналов qml по умолчанию не может работать - PullRequest
0 голосов
/ 09 февраля 2011

--- Вопрос ---

Я создаю компонент "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 для запуска других примеров и демонстраций, они, кажется, работают хорошо.Я не знаю, почему этот пример не может работать.

1 Ответ

0 голосов
/ 26 апреля 2011

Проблема возникает и здесь (qmlviewer 4.7.0).

Похоже, это ошибка в qmlviewer, прочитайте продолжение здесь .

Если вы удалите псевдоним (btnText), сигнал будет работать. (Но правильным решением является обновление до 4.7.1 +)

...