2

在 Qt 中,有谁知道如何创建 Error 类型的QJSValue

上下文:我使用QJSEngine::evaluate()执行用户在使用 QT 创建的 GUI 中编写的 JavaScript 代码。该 JavaScript 代码调用 C++ 函数。根据文档,QJSEngine::evaluate() 仅在 JavaScript 代码中有错误时才会引发脚本异常(错误类型的 QJSValue)。因此,如果 C++ 函数中有错误,我的方法是返回类型错误的 QJSValue。我遵循这条路径,因为 QJSEngine::evaluate 没有捕获 C++ 异常。

这是预期功能的代码片段:

void CMainWindow::slot_ExecuteJVScript()
{
   myCppClass myObject(parameters); //It has a foo() method.
   QJSEngine myEngine;
   myEngine.globalObject().setProperty("myObj", myEngine.newQObject(&myObject)); //Now we can access the C++ object from JavaScript code.
   QString myScriptJS = "var X = myObj.foo()";  //Calling a C++ function from JavaScript
   QJSValue myValue = myEngine.evaluate(myScriptJS);
   if(myValue.isError())
   {
      //If there is an error in the JavaScript code we enter here
      //But I also wanto to enter here if there is an error in my foo() C++ function. 
   }
   else
   {
      //Do things with myValue
   }
}

myCppClass::foo() 的迷你示例

QJSValue myCppClass::foo()
{       
   if(something)
   {
       //Create a QJSValue myValue with some data
       return myValue;
   }
   else
   {   //ERROR
       //Create a QJSValue of type Error
       return myValueOfTypeError;
   }
}

太感谢了。

4

0 回答 0