2011-12-07 74 views
1

我得到了QWebPage :: loadFinished(布爾)信號的問題,它回調兩次,這是正常的? (根本沒有鏈接,例如HTTP狀態302)Signal QWebPage :: loadFinished(bool)返回兩次?

考慮下面的代碼,整個事情可能會導致問題,試圖加載另一個鏈接,這將是一個問題?

如果我在loadFinished(bool)插槽做每次qDebug() << thisUrl;,我可以看到它的3倍,是正常的,一個URL XXX,兩個用於URL YYY,最後兩個環節是完全一樣的。

class Dummy 
{ 
    public: 
     Dummy() 
     { 
      page = new QWebPage(this); 
      connect (page , SIGNAL(loadFinished(bool)) , SLOT(loadFinished(bool))); 
      page->mainFrame()->load ("XXX"); 
     } 

    private: 
     QWebPage *page; 

    private slots: 
     void loadFinished (bool ok) 
     { 
      if (! ok) return; 

      const QString & thisUrl = page->mainFrame()->url().toString(); 

      if (thisUrl matches XXX) 
      { 
       // parse reply message of url XXX 
       page->mainFrame()->load ("YYY"); 
       return; 
      } 

      if (thisUrl matches YYY) 
      { 
       // parse reply message of url YYY 
       return; 
      } 
     } 
}; 

回答

4

即時通訊4.7.4(與phantomjs)也看到這一點。我使用框架的loadFinished而不是頁面,它不會被髮送兩次。

+0

問題解決了,我不明白爲什麼 – daisy

+0

我真的不知道,我真的沒有傾向於去Qt代碼裏找出原因。也許你可以提交錯誤報告? –