Стандартный подход:
создать QScriptEngine
отобразить некие объекты в скрипт (они доступны в теле скрипта)
выполнить
C++ (Qt)
QScriptEngine scriptEngine;
QFile file("./js_script.js");
if(file.open(QIODevice::ReadOnly)) {
QScriptValue val = scriptEngine.newQObject(qtMyObject);
scriptEngine.globalObject().setProperty("jsMyObject", val);
QString strScript = file.readAll();
QString strRes = scriptEngine.evaluate(strScript).toString();
if(scriptEngine.hasUncaughtException()) {
qDebug() << "Exception: file " << file.fileName()
<< " Line " << scriptEngine.uncaughtExceptionLineNumber()
<< " result " strRes;
}
}
В скрипте происходит следующее:
Java
var __LINE__ = 3;
function test(){
jsMyObject.appendLog("Ok", __LINE__);
}
test();
Из js выполняется метод Q_INVOKABLE void qtMyObject::appendLog(Qstring, int)
Вот я и спрашиваю, существует ли "Эквивалент Си-шного макроса __LINE__ в контексте скрипта"?