c++ - QWebEngineView加載url后直接點(diǎn)擊鏈接沒(méi)有反應(yīng)要怎么解決?
問(wèn)題描述
我用QWebEngineView加載一個(gè)url后,直接點(diǎn)擊鏈接沒(méi)有任何反應(yīng),要在鏈接上右鍵點(diǎn)擊,然后通過(guò)菜單的Follow Link才能打開。初學(xué)Qt能力有限,找了QWebEngineView和QWebEnginePage的文檔愣是沒(méi)看到有相關(guān)的方法,求大家?guī)兔纯础?/p>
網(wǎng)上資料太少了,全是QWebView的,可是我用的是Qt5.6,已經(jīng)沒(méi)有這個(gè)模塊了。
問(wèn)題解答
回答1:在QWebEngineView中有下面的方法:
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
在鼠標(biāo)左鍵點(diǎn)擊的時(shí)候會(huì)觸發(fā)這個(gè)方法,你把它重載一下,用你自己的實(shí)現(xiàn)就可以了。
回答2:這個(gè)bug與createWindow函數(shù)好像沒(méi)關(guān)系。在QWebEngineView里面,用戶點(diǎn)擊網(wǎng)頁(yè)的鏈接時(shí),會(huì)觸發(fā)信號(hào):urlChanged(QUrl)但是QWebEngineView不會(huì)自動(dòng)去加載新的鏈接。
所以需要自己為urlChanged(QUrl)新建一個(gè)槽函數(shù),自己手動(dòng)加載參數(shù)里的新鏈接。比如:
connect(m_pView, SIGNAL(urlChanged(QUrl)), this, SLOT(onUrlChanged(QUrl)));
//網(wǎng)頁(yè)鏈接地址//用戶點(diǎn)擊網(wǎng)頁(yè)觸發(fā)//QWebEngineView有毛病,用戶點(diǎn)擊網(wǎng)頁(yè)里的鏈接時(shí),只觸發(fā)urlChanged(QUrl)信號(hào)//不自動(dòng)加載新鏈接網(wǎng)頁(yè),需要手動(dòng)加載void MainWindow::onUrlChanged(const QUrl &url){
//地址欄的舊網(wǎng)址QUrl old = QUrl( m_pURLEdit->text() );//鏈接有變化才更新,用戶點(diǎn)擊網(wǎng)頁(yè)里的新鏈接會(huì)觸發(fā)if(url != old){ m_pURLEdit->setText( url.toString() ); //用戶點(diǎn)擊了新網(wǎng)頁(yè),但是沒(méi)自動(dòng)加載,手動(dòng)刷新 m_pView->load(url);//要放在if判斷內(nèi)部,否則容易無(wú)限刷新,死循環(huán)}qDebug()<<url;
}
**
示例代碼: http://pan.baidu.com/s/1gfc7BXp**
相關(guān)文章:
1. python - 多態(tài)調(diào)用方法時(shí)卻顯示bound method...2. android - viewpager問(wèn)題PagerTabStrip樣式3. java如何高效讀寫10G以上大文件4. dockerfile - [docker build image失敗- npm install]5. css - input元素的time控件無(wú)法選擇6. javascript - vue-router怎么不能實(shí)現(xiàn)跳轉(zhuǎn)呢7. python 字符串匹配問(wèn)題8. javascript - CSS圖片輪播顯示問(wèn)題9. javascript - js判斷用戶的網(wǎng)絡(luò)能否上網(wǎng)?10. javascript - 這里的這個(gè)函數(shù)是干嘛用的?
