本文要实现的功能有,浏览器导航栏,包括"前进"、“后退”、”刷新“;可实时刷新界面title和图标;可以查看历史记录,设置主页,查看网页源代码;可实现网页的缩放;实时显示网页加载进度;可以进行超链接跳转。功能之间相对独立,没有复杂的逻辑关系,代码梳理的应该比较明晰了,下面按照顺序介绍开发步骤,并介绍一些注意事项,附上源码工程。
Qt4使用QWebView实现浏览器相关的功能,看网上都说Bug很多,到了Qt5.5,使用QWebEngine模块及其中的类代替QWebView实现浏览器的功能,官方介绍,内部技术修改了,总之现在比较稳定了。
QtWebEngine模块提供了一个Web浏览器引擎,可以方便地在没有本地Web引擎的平台上将来自万维网的内容嵌入到Qt应用程序中。比起以前的Qt Webkit提供了更好的支持。Qt WebEngine本身是一个非常庞大的项目,涉及了HTML、CSS、JavaScript等多方面的知识,Qt对于Qt Webegine的支持是在逐渐加强的。但就目前来说,一个网页浏览器的基本功能是全部支持的,包括了网页显示,导航菜单,显示网站图标,提供历史记录以及字符串查找功能。
并在.h中添加头文件即可使用。
4.由于每台主机的自身配置不同,可能会对qt程序产生影响。按照如下代码,
可以实现显示一个网页的功能。
.h文件
.cpp文件
当用户点击历史记录项的时候,应该使用listwidget方法确定当前行,配合history()->goToItem(item);方法转到单击的页面。
10.响应超链接
以上0-9步骤完成之后你会发现,界面是无法响应超链接的,当鼠标放在超链上是有部件的状态变化,可是点击却没有反应。有反应说明Qt已经获取到了这个点击信息,不需要你再去根据鼠标位置单击事件做解析。那他的机制是,当你点击超链接,或者运行JavaScript、或其他会弹出界面的操作时,他会去调用虚函数,creatwindow,但默认这个函数中没有内容,因此需要在继承自QWebEngineView的子类中重写。例如在该函数中打印某信息,当你点击超链或者查看源代码时,控制台会打印这句话。在该函数中直接返回this,将实现超链的响应,即网页的跳转。当然该函数提供了一个参数,这个参数是网页传递的,即QWebEnginePage::WebWindowType type,查看帮助可知该枚举类型有四类,可以在重写的creatWindow中根据不同的type执行不同的操作。
以上步骤介绍比较详细了,当然有一些必要的判断操作,提示操作以及错误判断未提及,这是比较容易的。稍后贴出代码。
其中注释中序号与”步骤“相对应。
自定义的继承自QWebEngineView的子类,为了重写creatwindow函数以实现网页跳转。
- 🎄我的主页
- 🎄【QT实战】汇总导航
- 🎄上一篇:Qt项目(6)Qt实现天气预报
- 🎄下一篇:Qt项目(8)Qt实现音乐播放器