1

我遇到了 QWebPage::loadFinished (bool) 信号的问题,它回调了两次,这正常吗?(根本没有链接,例如HTTP状态302)

考虑下面的代码,整个事情可能会导致问题,试图在该插槽中加载另一个链接,这会是一个问题吗?

如果我qDebug() << thisUrl;每次在loadFinished(bool)slot 中执行一次,我可以看到 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

1 回答 1

4

我在 qt 4.7.4(使用 phantomjs)中也看到了这一点。我使用框架的 loadFinished 而不是页面的,它没有发送两次。

于 2011-12-09T22:59:25.467 回答