c++ - QWebEngineView加載url后直接點擊鏈接沒有反應要怎么解決?
問題描述
我用QWebEngineView加載一個url后,直接點擊鏈接沒有任何反應,要在鏈接上右鍵點擊,然后通過菜單的Follow Link才能打開。初學Qt能力有限,找了QWebEngineView和QWebEnginePage的文檔愣是沒看到有相關的方法,求大家幫忙看看。
網上資料太少了,全是QWebView的,可是我用的是Qt5.6,已經沒有這個模塊了。
問題解答
回答1:在QWebEngineView中有下面的方法:
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
在鼠標左鍵點擊的時候會觸發這個方法,你把它重載一下,用你自己的實現就可以了。
回答2:這個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;
}
**
示例代碼: http://pan.baidu.com/s/1gfc7BXp**
相關文章:
1. javascript - 如何判斷用戶切換到了當前標簽頁?2. javascript - H5頁面怎么查看console信息?3. css - 移動端 盒子內加overflow-y:scroll后 字體會變大4. javascript - webpack 報錯 新人 求解5. java - 在搭建ssm的過程中 用junit測試Dao層 怎么樣都報錯 說連接不上jdbc6. linux - Ubuntu下編譯Vim8(+python)無數次編譯失敗7. java - Mybatis關聯查詢8. 前端 - CSS3 box-shadow如何設置,或者用什么方法可以產生圖中這樣陰影的效果。9. nginx 80端口反向代理多個域名,怎樣隱藏端口的?10. java - 新手做一個安卓視頻播放器,想實現一個進度條,按鈕那種在視頻下方懸浮的功能,不知道思路!
