如何从 Qt 5.12 中的 QJSEngine 获取标准输出?

Posted

技术标签:

【中文标题】如何从 Qt 5.12 中的 QJSEngine 获取标准输出?【英文标题】:How do I get standard output from QJSEngine in Qt 5.12? 【发布时间】:2019-02-03 22:51:37 【问题描述】:

我通过调用installExtensions 启用了ConsoleExtension 来调试脚本。 QJSEngine如何获取控制台输出?

【问题讨论】:

consloe.log() ... ? 我知道如何在 javascript 中打印到标准输出 :)。我不知道如何从 C++ 中读取它。 在 C++ 中阅读是什么意思 .. 控制台日志记录 id 调试工具 .. 【参考方案1】:

如果您想将脚本的输出捕获回您的 C++ 程序,最好不要使用ConsoleExtension - 而是公开一个 API 以允许脚本直接调用您的实现以“打印到标准”输出”。

以 Plasma ScriptEngine 的作用为例 - 它在 globalObject 上公开了一个 print() 方法,脚本可以使用该方法来“打印输出”。在 Plasma 中,它会从 Plasmashell 进程中打印出来并由各种日志记录机制捕获,但您可以使用 print() 函数的输入来做您想做的事情。你的全局对象接口甚至可以模仿console.log()

【讨论】:

以上是关于如何从 Qt 5.12 中的 QJSEngine 获取标准输出?的主要内容,如果未能解决你的问题,请参考以下文章

Qt QJSEngine 导入js文件

如何在 QJSEngine 中注册 QList<quint64> 之类的类型?

使用 QJSEngine 在 Qt 中执行 Javascript 的速度

Qt使用QJSEngine执行脚本

如何使用 QJSEngine 构建 API?

如何清理或销毁 QJSEngine?