0

在基于 QThread 的类中,我有一个 QWebPage,当 loadFinished() 时,我需要解析内容,它会卡住 UI。所以我把所有东西都放在一个线程中:

class Thread: public QThread
{
   public:
      Thread (QObject *p): QThread (p)
      {
         moveToThread (this);
         connect (&page, SIGNAL(loadFinished(bool)), SLOT(loadFinished(bool)));
      }
   private slots:
      void loadFinished (bool ok)
      { 
         // never get called, unless I remove the `moveToThread(this)`
      }
};

我也尝试将 QWebPage 的事件移动到这个基于 qthread 的类中,我得到了错误,似乎你不能将事件移动到一个新线程。

有什么想法吗?

4

1 回答 1

0

不幸的是,不能在主 GUI 线程之外的单独线程上创建 Qt GUI 元素。如果您试图补偿由于 QWebPage 中的资源加载而导致的 GUI 减速,我完全理解您的思考过程。我已经彻底调查了这个问题,但还没有找到太明确的答案。

已经报告了一个在 Windows 中需要很长时间的代理查找错误:https ://bugreports.qt-project.org/browse/QTBUG-10106这个错误目前尚未解决,但将来可能会有解决方案。

于 2012-11-26T04:03:09.027 回答