QT多标签浏览器

Posted 刘雄的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT多标签浏览器相关的知识,希望对你有一定的参考价值。

       最近在用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、需要添加状态栏显示当前网页加载的百分比

以上是关于QT多标签浏览器的主要内容,如果未能解决你的问题,请参考以下文章

QT C++ 编写多窗口之间的跳转 在一个窗口中可以变化很多UI界面

web代码片段

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

QT QHttpMultiPart上传图片

如何通过代码设置片段标签?

刷新标签片段和 viewpager