Qt 开发浏览器插件
Qt的Browsesr Plugin框架,通过简单的办法将widget或者objects编程浏览器支持的插件(支持Netscape LiveConnect APIs的浏览器)。
Netscape, Mozilla FireFox and Opera 支持Qt的插件。
ActiveQt用来支持IE的插件ActiveX。
1.下载qtbrowserplugin-
2.4_1-opensource.zip
参考网站:
/products/appdev/add-on-products/catalog/4/Utiliti es/qtbrowserplugin/
我将下载后解压的文件放在
D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource
然后按照INSTALL.TXT上的内容来编译例子和安装帮助文件等。
(1)编译例子
从命令行进入D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource后,首先qmake 然后make
(2)安装帮助文档
2.windows 下用vs2008+qt编译插件,并测试插件
如果没有Vs2008与qt的编译环境,需要建立环境。
(1)新建Qt工程
A. 选择Qt Applilcation 名称为qtwebpluginstest。
B.点击OK后,点击Finish即可建立工程
(2)打开文件qtwebpluginstest.ui,
在Qt Desiner中拖拽PushButton放置于窗口,修改其名称为“点击我吧”。
(3)在工程中添加文件
A.D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src\ qtbrowserplugin.cpp
B.D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src\ qtbrowserplugin.def
C.D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src\ qtbrowserplugin_win.cpp
如果已变成动态库dll的时候可以引入动态库dll。
(4)在工程中添加qtwebpluginstest.rc文件
文件内容中模仿
D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\examples \trivial\trivial.rc
注意mimetype的值为“qtwebpluginstest/very”,其它提示插件内容可根据需要修改。
(5)在工程文件qtwebpluginstest.h中添加Q_CLASSINFO信息,信息与rc信息中的mimetype一致。
(6)在工程文件qtwebpluginstest.cpp中增加创建插件的信息
(7)改变工程属性
A.general->configuration type 改为dynaminc library(.dll)
B.c++->general->additional include directories 中增加包含文件
D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src
C.
D.c/c++->preprocessor中增加预定义宏
QTWEBPLUGINSTEST_EXPORTS
E.linker->outputfile 变更为 $(OutDir)\np$(ProjectName).dll
注意一定要以np开头,dll结尾否则firefox不是别插件
F. linker-> 变更为
D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src\qtbrowserpl ugin.def
(8)编译
如果发生错误
D:\QT-VS2008_Develop\qtbrowserplugin-2.4_1-opensource\src\qtbrowserplugin.h(130) : error C2027: use of undefined type 'QMetaClassInfo'
在文件qtbrowserplugin中添加#include<QtCore/QMetaClassInfo>
(9)将编译生成的dll放置到firefox 的plugins目录,使用测试文件test.html 既可以看到我们的插件了。
3.windows下用QCreator编译插件,并测试插件
(1)新建Qt工程 qtwebpluginstest
4.内部事件调用以及外部访问接口
(1)内部事件调用
qwebpluginstest.h中增加事件
A.paintevent(QPaintevent*)重绘窗口,在指定位置显示当前时间
B.mousePressEvent(QMouseEvent*) 鼠标按下事件,按下后用update来刷新窗口,显示按下时的系统时间。
Qwebpluginstest.cpp
初始化的时候显示时间是: 11:00:44
鼠标按下后显示时间是: 11:01:56
综上,插件的内部事件调用机制与桌面应用程序没有区别。
(2)外部访问接口
外部访问接口必须是公有的槽。
A. 公有的槽
qwebpluginstest.h中增加槽
qwebpluginstest.cpp
Html页中增加点击test.html
点击无参数修改名称
点击有参数修改名称
点击还原名称
B.属性(必须是公有的slots才能被外部访问) qwebpluginstest.h 中增加
qwebpluginstest.cpp 中增加
修改内容如下test.html中增加编译调试:
点击读取文本属性点击设置文本属性
5.如何编译成Active?
实验没有成功编译时不能生成tbl文件。
6. Browser Plugin
API简介
工程文件 qtwebpluginstest.rar
测试文件 test.html。