当我从主线程运行QWebFrame::evaluateJavaScript(scriptSource)
时,一切似乎都运行正常。但是当我尝试从不同的线程运行它时,我得到SyntaxError: Parse error
。即使我正在尝试运行像1+1;
这样的简单代码。
有人可以解释为什么会发生这种情况以及这是否是预期的行为?
是否有可能在另一个线程中使用QWebKit然后使用主线程?
P.S。:我正在运行Qt4.8
答案 0 :(得分:0)
我对QWebFrame或QT了解不多,但以下情况应该成立。
简单来说,它的GUI应用程序和所有操作都必须在主线程中完成。如果您有多个线程,则必须找到一种方法将调用通道传递给主gui循环线程或主线程。
主要原因之一是应用程序可以在内部使用的线程本地存储。如果从另一个线程执行该功能,则可能无法设置本地存储。
对于GTK调用,大多数(全部?)webkit调用必须通过gtk idle hook进行引导,以便它在适当的线程中执行。在QT中应该有相同的东西。