当我调用此代码时:
QScriptEngine e;
e.evaluate("print('hello, world!')");输出文本(来自print方法)被写入主应用程序的终端。
有没有办法将它重定向到自定义的QIODevice?
发布于 2011-04-20 23:58:32
您可以将print()替换为您自己的实现:
首先,定义一个执行所需操作的C++函数。在本例中,它只是为exposition留空:
QScriptValue myPrint( QScriptContext * ctx, QScriptEngine * eng ) {
return QScriptValue();
}然后将该函数安装为新的print()
QScriptEngine e = ...;
e.globalObject().setProperty( "print", e.newFunction( &myPrint ) );
e.evaluate( "print(21);" ); // prints nothing发布于 2011-01-07 04:11:03
输出文本转到stdout,因此您需要重定向stdout。有关想法,请参阅此question。最好的想法:使用reopen重定向到一个文件*,或者(更好的)使用rdbuf将stdout重定向到从std::ostream派生的其他流,然后你可以使用QFile.open(1,...)-
https://stackoverflow.com/questions/4612999
复制相似问题