当我把这种代码:QtScript输出重定向
QScriptEngine e;
e.evaluate("print('hello, world!')");
输出文本(从打印方法)写入到主应用程序的终端。
有没有办法将它重定向到一个自定义的QIODevice?
当我把这种代码:QtScript输出重定向
QScriptEngine e;
e.evaluate("print('hello, world!')");
输出文本(从打印方法)写入到主应用程序的终端。
有没有办法将它重定向到一个自定义的QIODevice?
您可以用您自己的实现替换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
输出文本转到标准输出,因此您需要重定向标准输出。有关想法,请参阅question。最好的想法:使用重新打开重定向到FILE *,或者(更好)使用rdbuf将stdout重定向到std :: ostream派生的其他流,并且您可以使用QFile.open(1,...) -
这里有大量的文本,去到stdout(QWarnings,QDebug到stderr,其他在这种情况下,它只是为空博览会printf/scanf等)。我只需要重定向QScriptEngine的输出...... – Arenim 2011-01-07 12:22:40