最近在用QT寫個簡單的瀏覽器,原來的版本是5.7,沒有QWebView,而是使用QAxWidget加載ie。優點是打開網頁速度快,但是當點擊網頁中的鏈接時,會自動調用windows的IE瀏覽器,水平有限,不知道如何在自己的程序中打開,搜索無果,不得已放棄使用QAxWidget(大神求教!!!),降低QT版本至5.6,使用QWebView。
(1)繪制QT界面
增加6個QToolButton和一個QLineEdit,圖標在QT安裝目錄下搜索.png即可獲得;
增加一個QTabWidget和一個QWebView,效果如下:
(2)添加槽函數用於打開網頁,並鏈接地址欄的回車信號和槽函數
void LXBrowser::goWeb() { QString url = ui.addressLineEdit->text(); url = "http://" + url; // 需要加上http:://才能打開網頁。。。有待改進 ui.webView->load(url); }
(3)連接QWebView中的linkClicked(const QUrl &)信號和槽函數,用於在新頁面打開網頁
connect(ui.webView, SIGNAL(linkClicked(const QUrl &)), this, SLOT(clickLink(const QUrl &)));
void LXBrowser::clickLink(const QUrl &linkUrl) { QWebView* newWebView = new QWebView(); newWebView->load(linkUrl); int index = ui.tabWidget->addTab(newWebView, linkUrl.fileName()); ui.tabWidget->setCurrentIndex(index); ui.addressLineEdit->setText(linkUrl.toString()); }
效果:
超級簡單的瀏覽器就完成了,哈哈哈
存在問題:
1、前進、后退、停止、收藏、歷史等功能尚未實現;
2、新標簽的title;
3、打開網頁慢,尤其是愛奇藝、優酷等視頻或者大量圖片的網站;
4、需要添加狀態欄顯示當前網頁加載的百分比