QT瀏覽器插件開(kāi)發(fā)入門(mén)_第1頁(yè)
QT瀏覽器插件開(kāi)發(fā)入門(mén)_第2頁(yè)
QT瀏覽器插件開(kāi)發(fā)入門(mén)_第3頁(yè)
QT瀏覽器插件開(kāi)發(fā)入門(mén)_第4頁(yè)
QT瀏覽器插件開(kāi)發(fā)入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./QT瀏覽器插件開(kāi)發(fā)入門(mén)簡(jiǎn)介主流的瀏覽器插件開(kāi)發(fā)主要分為兩種:ActiveX控件,適合IE核的瀏覽器NPAPI插件,適合Netscape瀏覽器的開(kāi)發(fā)NPAPI全稱(chēng)為NetscapePluginApplicationProgrammingInterface在QT4.7.2下有這兩種模式的開(kāi)發(fā)支持,相關(guān)資料可在Qt文檔上找到,ActiveX開(kāi)發(fā)有QT提供ActiveQTserverlibrary支持庫(kù)〔QT4.7.2,NPAPI開(kāi)發(fā)QT4.7.2本身無(wú)此支持,需要下載相關(guān)的API,下載,解壓后qtbrowserplugin目錄就是。下面是完成的一個(gè)測(cè)試,首先做了一個(gè)功能庫(kù)imagedemo,主要完成一個(gè)圖片的顯示功能,現(xiàn)在將它分別封裝為ActiveX控件和NPAPI插件,供不同瀏覽器調(diào)用。ActiveX創(chuàng)建QTApplication工程工程名稱(chēng):npgraphapp,創(chuàng)建時(shí)注意必須選擇ActiveQTserverlibrary,如下圖創(chuàng)建資源文件文件npgraphapp.rc中就一句話(huà):1TYPELIB"npgraphapp.rc"修改類(lèi)npgraphapp.h在文件中增加Q_CLASSINFO信息,代碼如下:#ifndefNPGRAPHAPP_H#defineNPGRAPHAPP_H#include<QtGui/QtGui>classnpgraphapp:publicQWidget{ Q_OBJECT Q_CLASSINFO<"ClassID","{4CFCDEDD-F2F6-42E9-8671-D63D7B15AA2C}">; Q_CLASSINFO<"InterfaceID","{615B202B-C4F2-4C9F-B9F5-2F9D52ECF0BC}">; Q_CLASSINFO<"EventsID","{C9C4EB5F-F926-4770-AA7F-50702B53DB3E}">;public: npgraphapp<QWidget*parent=0>; ~npgraphapp<>;…};#endif//NPGRAPHAPP_H修改main.cpp在文件中增加QAXFACTORY_BEGIN宏,代碼如下:#include"npgraphapp.h"#include<QtGui/QApplication>#include<ActiveQt/QAxFactory>QAXFACTORY_BEGIN<"{5E2C9F73-03E9-4351-9ECC-C46697D1A8D5}","{443A7F7F-FFE1-498A-AECB-D3EBCD5810CB}">QAXCLASS<npgraphapp>QAXFACTORY_END<>intmain<intargc,char*argv[]>{ QApplicationa<argc,argv>; if<!QAxFactory::isServer<>> { npgraphapp*w=newnpgraphapp<>; w->show<>; } returna.exec<>;}修改工程屬性增加生成事件,如下圖:在命令行中編輯〔注冊(cè)ActiveX控件C:\Qt\4.7.2\bin\idc.exe$<TargetPath>/idl$<IntDir>\npgraphapp.idl-version1.0iferrorlevel1gotoVCReportErrormidl$<IntDir>\npgraphapp.idl/nologo/tlb$<IntDir>\npgraphapp.tlbiferrorlevel1gotoVCReportErrorC:\Qt\4.7.2\bin\idc.exe$<TargetPath>/tlb$<IntDir>\npgraphapp.tlbiferrorlevel1gotoVCReportErrorC:\Qt\4.7.2\bin\idc.exe$<TargetPath>/regserver注冊(cè)和調(diào)用工程編譯后自動(dòng)生成事件會(huì)注冊(cè)組件,注意看編譯信息是否注冊(cè)成功測(cè)試組件<OBJECTID="npgraphdemo"CLASSID="CLSID:4CFCDEDD-F2F6-42E9-8671-D63D7B15AA2C"HEIGHT="80%"WIDTH="80%"ALIGN="LEFT"></OBJECT>問(wèn)題:如果僅僅在界面上繪制可創(chuàng)建QTActive庫(kù),如果界面上需調(diào)用其它QT控件或自定義的QT控件,需創(chuàng)建為可執(zhí)行文件才可以NPAPI創(chuàng)建QTLibrary工程名稱(chēng):npgraphdemo下載,解壓后qtbrowserplugin目錄就是NPAPI的封裝支持,使用src中的文件,將下列的五個(gè)文件拷貝到工程目錄下,在工程中加入qtnpapi.hqtbrowserplugin.hqtbrowserplugin_p.hqtbrowserplugin.cppqtbrowserplugin_win.cpp〔windows操作系統(tǒng)增加資源文件文件名稱(chēng)是npgraphdemo.rc,容如下1VERSIONINFOFILEVERSION1,0,0,1PRODUCTVERSION1,0,0,1FILEFLAGSMASK0x3fL#ifdef_DEBUGFILEFLAGS0x1L#elseFILEFLAGS0x0L#endifFILEOS0x4LFILETYPE0x2LFILESUBTYPE0x0LBEGINBLOCK"StringFileInfo"BEGINBLOCK"040904e4"BEGINVALUE"Comments","\0"VALUE"CompanyName","Nokia\0"VALUE"FileDescription","grapher\0"VALUE"FileExtents","g1n\0"VALUE"FileOpenName","Graphabledata<*.g1n>\0"VALUE"FileVersion","1,0,0,1\0"VALUE"InternalName","npgraphdemo\0"VALUE"LegalTrademarks","\0"VALUE"MIMEType","application/grapher"VALUE"OriginalFilename","npgraphdemo.dll\0"VALUE"PrivateBuild","\0"VALUE"ProductName","graphernpapiexample\0"VALUE"ProductVersion","1,0,0,1\0"VALUE"SpecialBuild","\0"ENDENDBLOCK"VarFileInfo"BEGINVALUE"Translation",0x409,1252ENDEND注意VALUE"MIMEType","application/grapher"這句,其中的MIMEType后面字符串為自定義類(lèi)型新建模塊定義文件在工程選擇"新建項(xiàng)",創(chuàng)建npgraphdemo.def,如下圖文件容:LIBRARY "npgraphdemo"EXPORTS NP_GetEntryPoints1 NP_Initialize2 NP_Shutdown3修改npgraphdemo.h在文件增加Q_CLASSINFO定義,注意Q_CLASSINFO<"MIME","application/grapher:g1n:GraphableASCIInumericdata">,此處的定義要和資源文件的MIMEType定義的一致#ifndefGRAPHFROM_H#defineGRAPHFROM_H#include<QtGui/QtGui>#include<qtbrowserplugin.h>QT_BEGIN_NAMESPACEclassQVBoxLayout;QT_END_NAMESPACEclassnpgraphdemo:publicQWidget,publicQtNPBindable{ Q_OBJECT Q_CLASSINFO<"ClassID","{2e5b2715-46b2-4831-ba9b-6a3b195d5ec8}"> Q_CLASSINFO<"InterfaceID","{94581136-3c0c-46cc-97a1-066061356d43}"> Q_CLASSINFO<"EventsID","{8c191b77-1894-45c7-9d6b-201dede95410}"> Q_CLASSINFO<"MIME","application/grapher:g1n:GraphableASCIInumericdata"> Q_CLASSINFO<"ToSuperClass","npgraphdemo">public: npgraphdemo<QWidget*parent=0>; ~npgraphdemo<>;…};#endif//GRAPHFROM_H修改npgraphdemo.cpp在文件中增加QTNPFACTORY_BEGIN宏#include"npgraphdemo.h"#include"imagedemo.h"npgraphdemo::npgraphdemo<QWidget*parent>:QWidget<parent>{…}npgraphdemo::~npgraphdemo<>{}QTNPFACTORY_BEGIN<"Qt-basedGraphPlugin","AQt-basedNSAPIplug-inthatgraphsnumericdata">;QTNPCLASS<npgraphdemo>QTNPFACTORY_END<>修改工程屬性在"C/C++"下"預(yù)處理器"選項(xiàng),增加"_X86_",如下圖編譯即可注冊(cè)和調(diào)用注冊(cè)方法如下1、在命令行中輸入regedit,打開(kāi)注冊(cè)表編輯2、在HKEYLOCALMACHIN\SOFTWARE\MozillaPlugins下新建子項(xiàng)/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論