QtScript输出重定向

时间:2011-01-06 08:17:49

标签: c++ qt qtscript

当我调用此代码时:

QScriptEngine e;
e.evaluate("print('hello, world!')");

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

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

2 个答案:

答案 0 :(得分:5)

您可以将print()替换为您自己的实现:

首先,定义一个能够满足您需求的C ++函数。在这种情况下,它只是空洞的陈述:

QScriptValue myPrint( QScriptContext * ctx, QScriptEngine * eng ) {
    return QScriptValue();
}

然后将该功能安装为新的print()

QScriptEngine e = ...;
e.globalObject().setProperty( "print", e.newFunction( &myPrint ) );
e.evaluate( "print(21);" ); // prints nothing

答案 1 :(得分:1)

输出文本转到stdout,因此您需要重定向stdout。有关想法,请参阅此question。最好的想法:使用reopen重定向到FILE *,或者(更好)使用rdbuf将stdout重定向到从std :: ostream派生的其他流,你可以使用QFile.open(1,...) -