QtScript输出重定向

Are*_*nim 4 c++ qt qtscript

当我调用此代码时:

QScriptEngine e;
e.evaluate("print('hello, world!')");
Run Code Online (Sandbox Code Playgroud)

输出文本(来自print方法)写入主应用程序的终端.

有没有办法将其重定向到自定义QIODevice?

Mar*_*utz 5

您可以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)