Time for action – sandboxed script evaluation

The next task for us is to modify our script editor so that it cleans up after the execution of each script. As was said, each script is executed in the current context of the engine, so the task of solving the problem boils down to making sure that each script executes in a separate context. Incorporate the following code in the run() method:

void MainWindow::run() {
    ui->logWindow->clear();
    QString scriptSourceCode = ui->codeEditor->toPlainText();
    m_engine.pushContext();
 QScriptValue result = m_engine.evaluate
  (scriptSourceCode, windowFilePath());
    if(m_engine.hasUncaughtException()) {
        // …
    }
    m_engine.popContext();
}

Run the program and repeat the last test to see that fun no longer persists across ...

Get Game Programming Using Qt now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.