Not much to add; what is the equivalent of JavaScript\'s setTimeout on qtScript?
You can expose the QTimer as an instantiable class to the script engine. You can then instantiate it via new QTimer().
This is documented in Making Applications Scriptable.
Below is a complete example. The timer fires a second after the script is evaluated, prints timeout on the console, and exits the application.
// https://github.com/KubaO/stackoverflown/tree/master/questions/script-timer-11236970
#include
template void addType(QScriptEngine * engine) {
auto constructor = engine->newFunction([](QScriptContext*, QScriptEngine* engine){
return engine->newQObject(new T());
});
auto value = engine->newQMetaObject(&T::staticMetaObject, constructor);
engine->globalObject().setProperty(T::staticMetaObject.className(), value);
}
int main(int argc, char ** argv) {
QCoreApplication app{argc, argv};
QScriptEngine engine;
addType(&engine);
engine.globalObject().setProperty("qApp", engine.newQObject(&app));
auto script =
"var timer = new QTimer(); \n"
"timer.interval = 1000; \n"
"timer.singleShot = true; \n"
"var conn = timer.timeout.connect(function(){ \n"
" print(\"timeout\"); \n"
" qApp.quit(); \n"
"}); \n"
"timer.start();\n";
engine.evaluate(script);
return app.exec();
}