2

Qt で、Error 型のQJSValueを作成する方法を知っている人はいますか?

Context : 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