我想從C++執行匿名Qt腳本函數,但無法找出要使用的QScriptContext。匿名qt腳本函數的上下文?
這裏的腳本:
{
otherObject.Text = "Hello World";
setTimeout(function(otherObject) { otherObject.Text = "Goodbye World"; }, 9000);
}
下面是在C的setTimeout方法++:
QScriptValue setTimeout(QScriptContext* ctx, QScriptEngine* eng)
{
// How can I obtain the correct context and arg list for the anonymous function here?
}
的QScriptValue對象的調用方法需要上下文和參數列表:
call(ctx->thisObject(), ctx->argumentsObject());
編輯:上下文可以是全局上下文,但構建參數列表來調用func這似乎是問題的癥結所在。我沒有看到任何解釋如何從C++構建「參數對象」的東西。有一個名爲「參數」的屬性,但它似乎沒有填寫,或者我還沒有弄清楚如何使用它。
我通過爲每個setTimeout調用創建一個子對象來實現定時器功能。在構造函數中,它調用startTimer(delay)。在定時器事件處理程序中,它調用匿名函數。完成後,它會調用killTimer()和deleteLater()。我認爲這會讓我擁有儘可能多的計時器,並且會在我自己之後清理乾淨。 – Jay
優秀的寫作。獎勵! – Jay