Rozważmy C++ oświadczenie (przykład from docs):QTimer :: SingleShot odpowiednik dla QML
QTimer::singleShot(600000, &app, SLOT(quit()));
Jak zrobić to samo w .qml JavaScript, coś jak ten QML:
Rectangle {
property int counter: 0
onCounterChanged: {
if (counter > 42) {
// do equivalent of above C++ statement here
}
}
// more code, which actually manipulates counter
}
Tam jest oczywiste rozwiązanie polegające na oddzielnym Timer
, który jest następnie uruchamiany przez ten kod JavaScript, i przyjmuję to jako odpowiedź, jeśli nie jest możliwe jednolinerowanie. Czy to jest?
Równowartość byłaby [Timer] (http: // doc.qt.io/qt-5/qml-qtqml-timer.html). Ustaw 'repeat: false', aby uzyskać zachowanie pojedynczego strzału. –
'repeat' to * false * domyślnie. – hyde
Ładne pytanie. 'setTimeout' /' setInterval' są wykluczone, ponieważ nie mogą być użyte. Możesz rozważyć [tę odpowiedź] (http://stackoverflow.com/a/28514691/2538363) jako - raczej hackowskie - podejście. Poprzez ustawienie parametrów w sygnaturze funkcji można zmniejszyć użycie do pojedynczej linii, np. 'delay (/ * repeat */true, 12000, functionName)'. – BaCaRoZzo