QML - Как добавить действие в обработчик сигнала? - PullRequest
1 голос
/ 05 апреля 2019

Я создал собственный таймер, предоставляющий функцию паузы и свойство истекшего времени. При срабатывании elapsedTime увеличивается на величину свойства 'interval'. Я уже проверил это, и он отлично работает.

// CustomTimer.qml
import QtQuick 2.0

Timer {
    property double elapsedTimeSec: 0.0

    interval: 100
    repeat: true

    onTriggered: elapsedTimeSec += interval/1000
}

Я добавил его в существующий проект в виде отдельного файла QML. Теперь я хочу добавить действие к своему onTriggered обработчику сигналов, чтобы взаимодействовать и переключать объекты в моем основном приложении. Небольшой код например:

Rectangle {
    Slider { 
        id: slider
        value: 0.2
    }
    CustomTimer {
        onTriggered: slider.value += 0.1    
    }
}

Как я могу это сделать, не удаляя уже существующий внутренний обработчик onTriggered (так как он необходим для процесса таймера)?

1 Ответ

1 голос
/ 05 апреля 2019

Как я могу это сделать, не удаляя уже существующие действия, так как они необходимы для процесса таймера?

Вам не нужно беспокоиться.Два обработчика сигнала выполняются отдельно и одновременно (теоретически).Они сосуществуют.Таким образом, в вашем коде будут выполняться как обработчики onTriggered в CustomTimer.qml, так и обработчик, вложенный в Rectangle.

Вид поведения overwrite , о котором вы беспокоитесьпроисходит только со свойствами.Например, CustomTimer ниже изменит интервал таймера от 100 до 500. В отличие от слотов, значение распространяется.

Rectangle {
    CustomTimer {
        interval: 500
    }
}
...