c++ - QWebEngineView加載url后直接點擊鏈接沒有反應(yīng)要怎么解決?
問題描述
我用QWebEngineView加載一個url后,直接點擊鏈接沒有任何反應(yīng),要在鏈接上右鍵點擊,然后通過菜單的Follow Link才能打開。初學(xué)Qt能力有限,找了QWebEngineView和QWebEnginePage的文檔愣是沒看到有相關(guān)的方法,求大家?guī)兔纯础?/p>
網(wǎng)上資料太少了,全是QWebView的,可是我用的是Qt5.6,已經(jīng)沒有這個模塊了。
問題解答
回答1:在QWebEngineView中有下面的方法:
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
在鼠標(biāo)左鍵點擊的時候會觸發(fā)這個方法,你把它重載一下,用你自己的實現(xiàn)就可以了。
回答2:這個bug與createWindow函數(shù)好像沒關(guān)系。在QWebEngineView里面,用戶點擊網(wǎng)頁的鏈接時,會觸發(fā)信號:urlChanged(QUrl)但是QWebEngineView不會自動去加載新的鏈接。
所以需要自己為urlChanged(QUrl)新建一個槽函數(shù),自己手動加載參數(shù)里的新鏈接。比如:
connect(m_pView, SIGNAL(urlChanged(QUrl)), this, SLOT(onUrlChanged(QUrl)));
//網(wǎng)頁鏈接地址//用戶點擊網(wǎng)頁觸發(fā)//QWebEngineView有毛病,用戶點擊網(wǎng)頁里的鏈接時,只觸發(fā)urlChanged(QUrl)信號//不自動加載新鏈接網(wǎng)頁,需要手動加載void MainWindow::onUrlChanged(const QUrl &url){
//地址欄的舊網(wǎng)址QUrl old = QUrl( m_pURLEdit->text() );//鏈接有變化才更新,用戶點擊網(wǎng)頁里的新鏈接會觸發(fā)if(url != old){ m_pURLEdit->setText( url.toString() ); //用戶點擊了新網(wǎng)頁,但是沒自動加載,手動刷新 m_pView->load(url);//要放在if判斷內(nèi)部,否則容易無限刷新,死循環(huán)}qDebug()<<url;
}
**
示例代碼: http://pan.baidu.com/s/1gfc7BXp**
相關(guān)文章:
1. mac連接阿里云docker集群,已經(jīng)卡了2天了,求問?2. 為什么我ping不通我的docker容器呢???3. docker網(wǎng)絡(luò)端口映射,沒有方便點的操作方法么?4. vim - docker中新的ubuntu12.04鏡像,運行vi提示,找不到命名.5. docker-compose 為何找不到配置文件?6. debian - docker依賴的aufs-tools源碼哪里可以找到啊?7. html5和Flash對抗是什么情況?8. 百度地圖api - Android 百度地圖 集成了定位,導(dǎo)航 相互的jar包有沖突?9. golang - 用IDE看docker源碼時的小問題10. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?

網(wǎng)公網(wǎng)安備