2011-12-07 2 views
1

У меня возникла проблема с сигналом QWebPage :: loadFinished (bool), он дважды звонит, это нормально? (вообще нет никакой связи, например, HTTP-статус 302)Сигнал QWebPage :: loadFinished (bool) возвращается дважды?

Рассмотрите следующий код, все это может вызвать проблемы, пытается загрузить еще одну ссылку в этом слоте, будет ли это проблемой?

Если я сделать qDebug() << thisUrl; каждый раз, когда в loadFinished(bool) слоте, я мог видеть это в 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

im see this with qt 4.7.4 (with phantomjs). Я использовал фрейм loadFinished вместо страницы, и он не отправляется дважды.

+0

проблема решена, и я не понимаю, почему – daisy

+0

Я действительно не знаю, и у меня нет желания входить в Qt-код, чтобы узнать, почему. может быть, вы можете подать отчет об ошибке? –

Смежные вопросы