帶做網(wǎng)站天天外鏈官網(wǎng)
1、軟件啟動(dòng)后加載網(wǎng)頁(yè)無(wú)異常,點(diǎn)擊按鈕,加載新網(wǎng)頁(yè)時(shí)崩潰
崩潰代碼:
?? ?QWebEngineView *createWindow(QWebEnginePage::WebWindowType type)
?? ?{
?? ??? ?Q_UNUSED(type);
?? ??? ?return this;
?? ?}
2、原因
Qt只是調(diào)用谷歌的瀏覽器引擎,不是像firefox、chrome那樣的瀏覽器,瀏覽器已經(jīng)提供了tab頁(yè)去顯示一個(gè)新的鏈接,因此需要自己設(shè)置如何顯示新鏈接。
3、解決方法:
(1)load()新的url
QWebEngineView的urlChanged()附帶的參數(shù)就是url地址,所以如果你想在本webview視圖上顯示這個(gè)頁(yè)面就直接在綁定的槽函數(shù)onUrlChanged()里調(diào)用load(url)就ok了。
解決代碼:
//綁定urlChanged()信號(hào)槽
?? ?connect(m_webView, SIGNAL(urlChanged(const QUrl)), this, SLOT(onUrlChanged(const QUrl)));
//加載跳轉(zhuǎn)的網(wǎng)頁(yè)
void QWebTestWidget::onUrlChanged(const QString &url)
{
?? ?m_webView->load(QUrl(url));
}
(2)重寫createWindow()方法
createWindow()默認(rèn)返回NULL,無(wú)法顯示新的鏈接是因?yàn)闆]有提供一個(gè)QWebEngineView給它,在這個(gè)方法里有一個(gè)WebWindowType類型參數(shù)。
? ? 解決代碼:
QWebEngineView *createWindow(QWebEnginePage::WebWindowType type)
?? ?{
?? ??? ?if (type == QWebEnginePage::WebBrowserTab)//解決崩潰問(wèn)題
?? ??? ?{
?? ??? ??? ?QWebEnginePage* newPage = new QWebEnginePage(this->page()->profile(), this);
?? ??? ??? ?this->setPage(newPage );
?? ??? ?}
?? ??? ?return this;
?? ?}