当我调用此代码时:
QScriptEngine e;
e.evaluate("print('hello, world!')");
Run Code Online (Sandbox Code Playgroud)
输出文本(来自print方法)写入主应用程序的终端.
有没有办法将其重定向到自定义QIODevice?
您可以print()使用自己的实现替换:
首先,定义一个可以完成你想要的C++函数.在这种情况下,它只是空的展示:
QScriptValue myPrint( QScriptContext * ctx, QScriptEngine * eng ) {
return QScriptValue();
}
Run Code Online (Sandbox Code Playgroud)
然后将该功能安装为新功能print():
QScriptEngine e = ...;
e.globalObject().setProperty( "print", e.newFunction( &myPrint ) );
e.evaluate( "print(21);" ); // prints nothing
Run Code Online (Sandbox Code Playgroud)