Considerate questa affermazione C++ (ad esempio from docs):QTimer :: SingleShot equivalente per QML
QTimer::singleShot(600000, &app, SLOT(quit()));
Come fare lo stesso in .qml JavaScript, qualcosa di simile QML:
Rectangle {
property int counter: 0
onCounterChanged: {
if (counter > 42) {
// do equivalent of above C++ statement here
}
}
// more code, which actually manipulates counter
}
C'è il ovvia soluzione di avere separato Timer
, che viene quindi avviato da questo codice JavaScript, e lo accetterò come risposta se un one-liner non è possibile. È?
L'equivalente sarebbe [Timer] (http: // doc.qt.io/qt-5/qml-qtqml-timer.html). Imposta 'repeat: false' per ottenere il comportamento di tiro singolo. –
'repeat' è * false * di default, in realtà. – hyde
Bella domanda. 'setTimeout' /' setInterval' sono fuori questione poiché non possono essere utilizzati. Puoi considerare [questa risposta] (http://stackoverflow.com/a/28514691/2538363) come un approccio - piuttosto hacker -. Impostando i parametri nella firma della funzione, è possibile ridurre l'utilizzo a una singola riga, ad es. 'delay (/ * repeat */true, 12000, functionName)'. – BaCaRoZzo