我用QWebEngineView加载一个url后,直接点击链接没有任何反应,要在链接上右键点击,然后通过菜单的Follow Link才能打开。初学Qt能力有限,找了QWebEngineView和QWebEnginePage的文档愣是没看到有相关的方法,求大家帮忙看看。
网上资料太少了,全是QWebView的,可是我用的是Qt5.6,已经没有这个模块了。
业精于勤,荒于嬉;行成于思,毁于随。
在QWebEngineView中有下面的方法:
QWebEngineView
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
在滑鼠左鍵點擊的時候會觸發這個方法,你把它重載一下,用你自己的實作就可以了。
這個bug與createWindow函數好像沒關係。 在QWebEngineView裡面,使用者點擊網頁的連結時,會觸發訊號:urlChanged(QUrl)但是QWebEngineView不會自動去載入新的連結。
所以需要自己為urlChanged(QUrl)新建一個槽函數,自己手動載入參數裡的新連結。 例如:
connect(m_pView, SIGNAL(urlChanged(QUrl)), this, SLOT(onUrlChanged(QUrl)));
//網頁連結位址//使用者點擊網頁觸發//QWebEngineView有毛病,使用者點擊網頁裡的連結時,只觸發urlChanged(QUrl)訊號//不自動載入新連結網頁,需手動載入void MainWindow::onUrlChanged(const QUrl &url){
//地址栏的旧网址 QUrl old = QUrl( m_pURLEdit->text() ); //链接有变化才更新,用户点击网页里的新链接会触发 if(url != old) { m_pURLEdit->setText( url.toString() ); //用户点击了新网页,但是没自动加载,手动刷新 m_pView->load(url);//要放在if判断内部,否则容易无限刷新,死循环 } qDebug()<<url;
}
**
在
QWebEngineView
中有下面的方法:在滑鼠左鍵點擊的時候會觸發這個方法,你把它重載一下,用你自己的實作就可以了。
這個bug與createWindow函數好像沒關係。
在QWebEngineView裡面,使用者點擊網頁的連結時,會觸發訊號:
urlChanged(QUrl)
但是QWebEngineView不會自動去載入新的連結。
所以需要自己為urlChanged(QUrl)新建一個槽函數,自己手動載入參數裡的新連結。
例如:
//網頁連結位址
//使用者點擊網頁觸發
//QWebEngineView有毛病,使用者點擊網頁裡的連結時,只觸發urlChanged(QUrl)訊號
//不自動載入新連結網頁,需手動載入
void MainWindow::onUrlChanged(const QUrl &url)
{
}
**
範例程式碼: http://pan.baidu.com/s/1gfc7BXp
**