一般在Dialog中使用QWebView會直接拖一個QWebView組件、 但是不能點選連結,然後會採用
connect(webView,SIGNAL(linkClicked(QUrl)),this,SLOT(loadUrl(QUrl)));
來處理網頁中載入的連結、但是這樣不可以不能確定那個串連是在新視窗中開啟、那個是在原來的視窗中開啟。
如果是新快顯視窗的話、會響應createWindow(); 可以參考。
在QWebPage中有這麼一個函數、重寫 acceptNavigationRequest ( QWebFrame * frame, const QNetworkRequest & request, NavigationType type )函數
webpage.h
class WebPage : public QWebPage{ Q_OBJECTpublic: explicit WebPage(QWidget *parent = 0); signals: void loadLink(const QUrl & url); void openLink(const QUrl & url);public slots: protected: bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type);};
webpage.cpp
WebPage::WebPage(QWidget *parent) : QWebPage(parent){}bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type){ if (type == QWebPage::NavigationTypeLinkClicked) { if (frame != mainFrame()) { //如果不是本視窗的連結 emit openLink(request.url()); //發送開啟新串連訊號 } else { emit loadLink(request.url()); //發送點選連結訊號 } } return QWebPage::acceptNavigationRequest(frame, request, type);}