Базовый Javascript / математика в QML ... почему он не работает? - PullRequest
1 голос
/ 05 ноября 2011

Я довольно новичок в QML.Согласно документации QML на http://doc.qt.nokia.com/4.7-snapshot/qdeclarativescope.html, объект Text должен показывать 15, но вместо этого он выводит только 5. Может ли кто-нибудь мне помочь?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2011

a в вашей функции является локальным по отношению к функции, потому что вы предваряли ее var. Вместо этого сделайте это:

    function randNumber(a){
        a = a+10;
        return a;
    }
1 голос
/ 07 ноября 2011

Вы никогда не вызываете свою функцию randNumber, поэтому она не будет иметь никакого эффекта. Если вы хотите установить text на результат randNumber(a), вы должны делать text: randNumber(a). Или без определения функции:

text : {
    var a = a+10;
    return a;
}

Если вы удалите var, для свойства a также будет установлено значение 15 (с указанным кодом только для text будет установлено значение 15, а для a останется 5).

0 голосов
/ 10 октября 2012

Ни передавайте его в качестве аргумента функции, ни создавайте новую переменную в функции randNumber, используя var. Просто используйте a. Это должно быть доступно в функции, так как функция внутри Text QML Component.

Это не работает, поскольку вы нигде не вызываете функцию в своей программе. Я предполагаю, что вы хотите вызвать его при запуске (технически, когда компонент Text загружен). Так что вы можете вызвать его с помощью функции Component.onCompleted.

Text {
    id: counter
    anchors.centerIn: parent
    property int a: 5;
    function randNumber(){
        a = a+10;
        return a;
    }
    text: a;
    Component.onCompleted: randNumber();
}

Посмотрите эту документацию для большего количества примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...