1.代码实现
工程目录结构如下:
AddressBar类包含了地址栏和按钮两个控件,将地址栏回车和按钮点击信号与goToSite()槽连接。
当回车和点击事件发生时,goToSite()将获得Url地址并发送go(QUrl)信号。
addressbar.h
addressbar.cpp
接下来是QtWebkit包中的主要类QWebView,我们借助这个类来渲染Url指向的网页。
为了当用户在地址栏回车或者点击Go按钮时能够自动加载网页,我们需要给QWebView
添加loadNewPage(QUrl)槽(因为QWebView没有类似load(QUrl)的槽),并将其与go(QUrl)
信号连接。所以我们实现一个QWebView的子类HtmlView。
htmlview.h
htmlview.cpp
接下来实现程序的主窗口QMainWindow,将AddressBar和HtmlView放置其中。
mainwindow.h
mainwindow.cpp
最后是程序的入口main.cpp
2.事件流分析
我们分别为AddressBar和HtmlView自定义了两个槽goToSite(QUrl)和loadNewPage(QUrl),以及新的信号go(QUrl)。
就是为了将Url地址传递给QWebView的load函数。
这里需要注意的是SIGNAL-SLOT机制是Qt的内部机制,它是同步执行的。源头上returnPressed()和clicked()槽的触发,
是从操作系统的事件队列中得到的,并进行异步的处理。以QPushButton的clicked()槽的触发为例,QApplication.exec()
执行后将会监听操作系统事件队列,当鼠标事件发生时,事件将会发送到QPushButton的event()函数进行分发:
3.SIGNAL-SLOT类的编译
关于Q_OBJECT宏以及SIGNAL,SLOT,emit等关键字奇怪的语法,其实他们是通过一个叫做MOC元对象编译器
的组件来进行预编译的,因此我们可以使用SIGNAL,SLOT,emit来清晰地连接各个信号槽,而非函数指针。
SIGNAL-SLOT使用很方便,但也是会损失一点执行效率,使用时要谨慎。
4.总结及学习资料
通过这个例子可以对Qt的SIGNAL-SLOT机制有个简单的了解,它可以减少对象间的依赖。假如不使用它,我们就
需要在AddressBar中直接调用HtmlView的load()函数,两个类耦合在了一起。在这个例子中MainWindow负责AddressBar
和HtmlView的构建和连接,使它们互相不知道对方的存在!
让我更感兴趣的其实是QtWebKit,通过它我们可以在Qt开发桌面应用时使用Web技术,而不用局限于Qt,MFC等等。
Web开发人员也可以投身桌面应用开发之中。
QtWebKit官方文档:http://doc.qt.nokia.com/4.7-snapshot/qtwebkit.html
学习笔记:http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/Qt4Gossip.html
QtWebKit系列教程:http://software.intel.com/zh-cn/blogs/2010/06/08/qt-webkit-qt-webkit/
信号槽深入学习:http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/
QtWeb - 一个开源的Qt浏览器项目
相关推荐
基于QT开发的浏览器源代码(otter-browser),可编译运行。
Qt 实现的简易浏览器
使用QT实现简单的浏览器,通过此源码,可以使新手迅速掌握QT开发浏览器。 使用QT实现简单的浏览器,通过此源码,可以使新手迅速掌握QT开发浏览器。
基于QtWebkit开发的浏览器,含历史记录、收藏夹、设置主页等功能!
基于QT的文件浏览器.zip
qt的webview等模块只能实现简单的浏览一层访问,这个浏览器能实现网页的多层点击访问,简单的demo,
现在常用的是在VC下进行编程,但是随着开源软件的流行及发展,越来越多的软件开发开始在QT平台上进行。本例中是应用QT开发的图像查看软件,为初学者提供学习依据。下不下由你^_^
QT webview浏览器相关开发,简单webview应用开发
支持Flash,可以在线看视频、听音乐 还有制作的文档
基于CEF封装的Qt+C++浏览器+支持音视频播+源码+项目介绍,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于CEF封装的Qt+C++浏览器+支持音视频播+源码+项目介绍...
用QGraphicsView和QGraphicsScene实现的一个简单的图像浏览器,该浏览器中包含了打开图片,显示图片,图像的放大,缩小,自适应等功能。
实用Qt编写的图片浏览器的程序,非常容易移植到各种嵌入式开发平台。代码简洁容易上手。
基于Qt开发的模拟Chrome浏览器内断网小游戏C++源码+使用说明+exe可执行文件.zip基于Qt开发的模拟Chrome浏览器内断网小游戏C++源码+使用说明+exe可执行文件.zip基于Qt开发的模拟Chrome浏览器内断网小游戏C++源码+使用...
QT浏览器代码,较为简单的QT程序,自己手动更改网址
QT内嵌IE功能实现,放在完整QT开发文件夹内,可直接QT打开
Qt5开发及实例,实例CH1006,简单网页浏览器。 实现步骤如下。 新建Qt Widgets Application,名称为“myHTTP”,类名为“MainWindow”,基类保持“QMainWindow”不变。完成后先在“myHTTP.pro”文件中添加语句“QT+=...
含:sdk,jdk,ndk,nat,qt5.9,压缩包合集。完美版!!!!!!!!!!
从外表来看是一个界面简洁的浏览器, html解析和显示用的Qt自带的Webkit。 其实这个项目的重点是页面切换的功能采用了一个Web Page Carousel, 是一个可旋转的滑动选单
基于QT的图片浏览器源码.zip