【问题标题】:QtScript output redirectionQtScript 输出重定向
【发布时间】:2011-06-04 12:31:43
【问题描述】:

当我调用这段代码时:

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

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

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

【问题讨论】:

    标签: c++ qt qtscript


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 有很多文本,进入标准输出(QWarnings、QDebug 到标准错误、其他 printf/scanf 等)。我只需要重定向 QScriptEngine 的输出...
      猜你喜欢
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2014-01-20
      • 2016-04-15
      相关资源
      最近更新 更多