本文演示如何將Qt應用程序打包嵌入IE浏覽器並發布。 1. 例子Qt程序: 新建項目,選擇Qt Library類型,類名為ClassDemo。 新建QtGui類(繼承QWidge)類名ClassGui,在ClassGui的ui中添加QLabel或者QPushButton。 在ClassDemo中添加ClassGui類型的成員變量指針,添加一個public成員函數GetWidget,返回該指針。 編譯,生成動態庫classdemo.dll。 2. 外殼Qt程序: 新建項目,選擇ActiveQtServer類型,類名為ClassServer。 在ClassServer中添加ClassDemo類型的成員變量指針。在構造函數中添加如下代碼: m_classdemo=new ClassDemo(this); QLayout *exist_layout = this->layout(); if ( exist_layout ) { delete exist_layout; } QGridLayout *layout = new QGridLayout; layout->addWidget(m_classdemo->GetWidget(),0,0); layout->setContentsMargins(0,0,0,0); this->setLayout(layout); 編譯,生成動態庫classserver.dll。 3. 編寫安裝信息文件classserver.inf 將classserver.dll依賴的所有庫找到,可能包括以下: classserver.dll classdemo.dll QtGuid4.dll QtCored4.dll msvcp90d.dll msvcr90d.dll 文件內容如下: [Version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] classdemo.dll=classdemo.dll classserver.dll=classserver.dll QtGuid4.dll=QtGuid4.dll QtCored4.dll=QtCored4.dll msvcp90d.dll=msvcp90d.dll msvcr90d.dll=msvcr90d.dll [classdemo.dll] file-win32-x86=thiscab [QtGuid4.dll] file-win32-x86=thiscab [QtCored4.dll] file-win32-x86=thiscab [msvcp90d.dll] file-win32-x86=thiscab DestDir=11 [msvcr90d.dll] file-win32-x86=thiscab DestDir=11 [classserver.dll] file-win32-x86=thiscab clsid={AAF5BD93-5D87-4741-8804-A8869DF7048A} FileVersion=1,3,1,0 RegisterServer=yes 其中clsid部分的值可在classserver.cpp中找到:QAXFACTORY_DEFAULT中5個的第一個。 4. 打包: 下載cab打包工具(鏈接地址:http://download.csdn.net/detail/fm0517/5114431)。 執行命令: cabarc.Exe n cabname.cab classdemo.dll classserver.dll QtGuid4.dll QtCored4.dll msvcp90d.dll msvcr90d.dll classserver.inf 其中cabname.cab為cab包的名字,後面的參數為所有相關動態庫和安裝信息文件 5. 寫html文件: 例子如下: <HTML> <HEAD> <TITLE>New Page</TITLE> </HEAD> <BODY> <br></br> <object ID="QSimpleAX" width=500 height=300 CLASSID="CLSID:AAF5BD93-5D87-4741-8804-A8869DF7048A" CODEBASE="cabname.cab"></object> </BODY> </HTML> 其中CLSID同inf文件中的clsid,CODEBASE為cab包的名字。 要求將cab包和html文件放在同一個目錄下。 6. 發布: 安裝apache或tomcat,將cab包和html放在相應目錄下即可。 打包成cab後就不需要在本機運行Regsvr注冊了。