gpt4 book ai didi

c++ - Qt:如何在单独的线程中将 QScriptEngineDebugger 连接到 QScriptEngine?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:06 24 4
gpt4 key购买 nike

我需要在单独的非 GUI 线程中处理脚本,因为脚本调用 C++ 函数可能需要很长时间才能处理(秒)。是否可以在非 gui 线程中将 QScriptEngineDebugger 连接到我的 QScriptEngine

问题是 - 如果我将 QScriptEngineDebugger 放在与 QScriptEngine(非 gui)相同的线程中,那么调试器将在调试时崩溃 - 代码显示它想要创建它是调试窗口,此类窗口只能在 GUI 线程中创建。如果我将 QScriptEngineDebugger 放在 GUI 线程中,应用程序将会崩溃,因为 QScriptEngine 不是线程安全的。有什么见解吗?

最佳答案

除非您准备编写自己的脚本调试器,否则似乎没有办法在与引擎不同的线程中运行调试器。

在幕后,QScriptEngineDebugger 使用了一个名为 QScriptEngineDebuggerFrontend 的类,该类又使用了一个名为 QScriptEngineDebuggerBackend 的类,这反过来又使许多直接调用引擎并将其自己的代理安装到引擎中。长话短说,调试器和引擎之间存在很多耦合。

另一种方法是将耗时的 C++ 函数封装在一个类中,该类在后台线程中运行耗时函数,并在耗时函数完成时发出信号。然后,将信号连接到脚本中的函数以处理结果。请参阅以下文档,了解如何将来自 C++ 对象的信号连接到脚本中的函数:

http://doc.trolltech.com/4.5/qtscript.html#using-signals-and-slots

关于c++ - Qt:如何在单独的线程中将 QScriptEngineDebugger 连接到 QScriptEngine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com