QT浏览器插件的开发过程总结
来源:互联网 发布:mac能用的wow插件 编辑:程序博客网 时间:2024/05/17 06:55
QT浏览器插件的网址:http://doc.qt.nokia.com/solutions/4/qtbrowserplugin/index.html
插件的主要实现是在一个.cpp中,其中包括类的定义和实现。由于它需要用到.moc文件所以在类的定义中必须要有Q_OBJECT,如
class Trivial:public QMainWindow, public QtNPBindable
{
Q_OBJECT
// Q_PROPERTY(QString text READ text WRITE setText)
Q_CLASSINFO("ClassID", "{5a22176d-118f-4185-9653-9f98958a6df8}")
Q_CLASSINFO("InterfaceID", "{2df735ba-da4f-4fb7-8f35-b8dfbf8cfd9a}")
Q_CLASSINFO("EventsID", "{449de213-f8bd-4d2e-a2cf-eab407c03245}")
Q_CLASSINFO("MIME", "trivial/very:xxx:Trivial and useless")
Q_CLASSINFO("ToSuperClass", "Trivial")
Q_CLASSINFO("DefaultProperty", "text")
public:
Trivial(QWidget *parent = 0);
~Trivial();
......................
}
//接下来是插件想要实现的功能
最后是
#include "trivial.moc"
QTNPFACTORY_BEGIN("Trivial Qt-based Plugin","A Qt-based LiveConnected plug-in that doesnothing")
QTNPCLASS(Trivial)
QTNPFACTORY_END()
#ifdef QAXSERVER
#include<ActiveQt/QAxFactory>
QAXFACTORY_BEGIN("{aa3216bf-7e20-482c-84c6-06167bacb616}","{08538ca5-eb7a-4f24-a3c4-a120c6e04dc4}")
QAXCLASS(Trivial)
QAXFACTORY_END()
#endif
其中Q_OBJECT必须得有,只要需要生成.moc文件就必须得有Q_OBJECT。
编写插件的时候,注意修改Q_CLASSINFO("MIME","trivial/very:xxx:Trivial and useless")这一句,MIME要与自己的插件类型相同。
还有下面的QTNPCLASS(Trivial)和QAXCLASS(Trivial)。QTNPCLASS(Trivial)是输出类,是QTNPFACTORY的宏。每一个源文件只能有一次,如果插件需要输出多个类(即有不同的多个MIME types),需要使一个QTNPCLASS分别对应一个MIME type类型。
QMainWindow是一种顶层窗口,正常使用时,它会弹出浏览器页面,但是如果想让基于QMainWindow的窗口嵌入浏览器页面上,需要加一句setparent();这句话可以使QMainWindow去掉window属性,而变成QWidget,从而作为QWidget的子窗口。
建立插件工程可以用CMake建立,也可以写pri文件用Qmake生成.pro。用cmake建立工程的话,CmakeLists文件例子如下:
#trivial MakeList
PROJECT(trivial)
CMAKE_MINIMUM_REQUIRED( VERSION 2.8.4 )
AUX_SOURCE_DIRECTORY(. SRC_LIST)
IF(WIN32)
SET(SRC_LIST ${SRC_LIST} trivial.rc)
ENDIF()
SET(CMAKE_BIN_PATH "${PROJECT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE}/")
MESSAGE("System Name:${CMAKE_SYSTEM_NAME}")
FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui QtXml)
IF(QT4_FOUND)
MESSAGE("QT_LIBRARIES is ${QT_LIBRARIES}")
MESSAGE("QT_USE_FILE is ${QT_USE_FILE}")
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
QT4_GENERATE_MOC(trivial.cpp ${CMAKE_CURRENT_BINARY_DIR}/trivial.moc)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
QT4_WRAP_CPP(SDPlugin_MOCS qtbrowserplugin.h qtnpapi.h qtbrowserplugin_p.h)
SET(SRC_LIST ${SRC_LIST} qtbrowserplugin.def)
ADD_LIBRARY(npsdplugin SHARED ${SRC_LIST} ${CMAKE_CURRENT_BINARY_DIR}/trivial.moc ${SDPlugin_MOCS} )
TARGET_LINK_LIBRARIES(npsdplugin ${QT_LIBRARIES})
ELSE()
MESSAGE("cant find qt4 !!!!!!!!!!")
ENDIF()
其中工程中的.cpp和.h文件除了plugin.cpp外,公用的还有qtbrowserplugin.cpp、qtbrowserplugin.h、qtbrowserplugin_win.cpp、qtbrowserplugin_p.h、qtnpapi.h这5个文件。
- QT浏览器插件的开发过程总结
- QT浏览器插件开发入门
- Firefox浏览器插件开发-总结
- QT开发过程问题总结
- [Chrome]谷歌浏览器插件开发:HelloChrome插件的开发过程
- 方便Web开发人士使用的浏览器编辑器插件总结
- 开发过程中遇到的问题总结--qt for android
- VRML浏览器插件的总结
- qt版本的浏览器开发
- QT开发的总结
- PPAPI插件与浏览器的交互过程
- js检测浏览器插件的方法总结
- atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
- js浏览器和浏览器插件检测的方法总结
- js浏览器和浏览器插件检测的方法总结
- [转贴]web开发的浏览器(工具)插件
- web开发的浏览器(工具)插件
- web开发的浏览器(工具)插件
- iPhone中如何进行多线程编程和线程锁
- 接口与类
- war文件
- shell-004 算术表达式操作方法汇总
- 从头到尾讲解EJB MDB(消息驱动bean)四——示例代码
- QT浏览器插件的开发过程总结
- Android文件下载(实现断点续传)的学习
- 技术能力提供优质股票交易服务
- Android SurfaceView和View的区别
- android开发环境搭建
- 回报而不被实际参与的生产活动
- 帮助出入口及成熟的贸易战略
- linux 下 网络编程
- 兼容Firefox和IE的onpropertychange事件oninput