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