Search code examples
c++qtdelegatesqwebkit

Open external links from flash player hosted on QWebKit


i have flash player running on QWebkit , and on the flash player there are some web links that needs to be open in external browser , what i did is :

m_webView->page()->setLinkDelegationPolicy(QWebPage::LinkDelegationPolicy::DelegateAllLinks);
    connect(m_webView->page(),SIGNAL(linkClicked(const QUrl&)),
                            this,
                            SLOT(linkClickedHandler(const QUrl&)),Qt::DirectConnection); 


void WebBroswerDeleget::linkClickedHandler(const QUrl& url)
{
QDesktopServices::openUrl(QUrl(url.toString(), QUrl::TolerantMode));
}

but its never triggered even of i change in the connect from m_webView->page() to m_webView


Solution

  • i overrided the QWebview::createWindow like this:

    QWebView* MyAdWebview::createWindow (QWebPage::WebWindowType type)
    {
        QWebView* p = new QWebView(0);
        connect(p->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)), this, SLOT(newWindowLoadFinished(QNetworkReply*)), Qt::UniqueConnection);
        return p;
    }
    
    void MyAdWebview::newWindowLoadFinished(QNetworkReply* reply) {
        QDesktopServices::openUrl(reply->url().toString());
    }
    

    QDesktopServices::openUrl is a cutom function which opens the default system browser with this url