Qt:如何在单独的线程中将QScript EngineedBugger连接到QScript引擎? P>我需要在单独的非GUI线程中处理脚本,因为脚本调用C++函数需要很长的时间来处理(秒)。是否可以在非gui线程中将qscriptengineedebugger连接到我的QScriptEngine

Qt:如何在单独的线程中将QScript EngineedBugger连接到QScript引擎? P>我需要在单独的非GUI线程中处理脚本,因为脚本调用C++函数需要很长的时间来处理(秒)。是否可以在非gui线程中将qscriptengineedebugger连接到我的QScriptEngine,c++,qt,C++,Qt,问题是-如果我将qscriptengineedebugger放在与QScriptEngine(非gui)相同的线程中,调试器将在调试时崩溃-代码显示它想要创建调试窗口,并且只能在gui线程中创建此类窗口。若我将qscriptengineedebugger放在GUI中,那个么线程应用程序将崩溃,因为QScriptEngine不是线程安全的。有什么见解吗?除非您准备编写自己的脚本调试器,否则似乎没有办法在与引擎不同的线程中运行调试器 在幕后,qscriptengineedebugger使用一个名为q

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

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

在幕后,
qscriptengineedebugger
使用一个名为
qscriptengineedebuggerfrontend
的类,该类又使用一个名为
qscriptengineedebuggerbackend
的类,该类又对引擎进行许多直接调用,并将自己的代理安装到引擎中。长话短说,调试器和引擎之间存在很多耦合

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