詳解QT中Webkit開發(fā)
QT中Webkit開發(fā),WebKit 是一個(gè)開源的瀏覽器引擎,與之相對(duì)應(yīng)的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也稱MSHTML,IE 使用)。同時(shí)WebKit 也是蘋果Mac OS X 系統(tǒng)引擎框架版本的名稱,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。
1、在Qt中使用 WebKit 瀏覽器核心
使用 QtWebKit 需要在工程文件(*.pro)中加入:
- QT +=webkit
- QT += network
2、QtWebKit的flash支持
QtWebKit 到固定的路徑(NPAPI插件廠商的安裝路徑)下載入flash控件,如果需要flash支持,確保一下文件存在:
- C:\WINDOWS\system32\Macromed\Flash\NPSWF32.dll
npswf32.dll就是 QtWebKit 需要的flash插件,由 micromedia 官方提供。
3、使用qt插件
分發(fā)程序時(shí),需要打包 qt\plugins\imageformats 目錄內(nèi)的 dll 文件(它們是qt的圖形圖像插件),才能支持 jpg、png、gif等的圖形圖像格式;最好連 plugins\codecs 目錄內(nèi)的dll文件一起打包,他們是用來支持各種語(yǔ)言編碼的(包括中文支持);除此以外還有其他一些qt插件。
4、如果使用了qt插件,需要設(shè)置qt插件路徑
qt應(yīng)用程序需要指定加載qt插件的目錄,以便載入上面提到的 plugins\imageformats 、plugins\codecs 等目錄內(nèi)的dll文件。
標(biāo)準(zhǔn)方式是通過 qt.conf 文件(放在qt應(yīng)用程序相同文件夾內(nèi))設(shè)置插件目錄的路徑。但是qt.conf內(nèi)必須使用絕對(duì)路徑,這不太容易確定。
可以直接在應(yīng)用程序內(nèi)指定 qt插件的路徑,例如:
- QApplication aApp(argc,argv);
- QApplication::setLibraryPaths(QStringList(QCoreApplication::applicationDirPath()+"/plugins/"));
在調(diào)用 QCoreApplication::applicationDirPath() 前,必須先創(chuàng)建一個(gè) QApplication的對(duì)象
5、中文支持:
- QTextCodec *codec=QTextCodec::codecForName("GB2312");
- QTextCodec::setCodecForLocale(codec);
- QTextCodec::setCodecForCStrings(codec);
- QTextCodec::setCodecForTr(codec);
6、使用 windows api
只要 #include<windows.h>就可以向MFC一樣使用windows的api 函數(shù),以及windows的數(shù)據(jù)類型,例如:LPCTSTR。
為了保持跨平臺(tái)特性,在用到windows api 函數(shù) 和 windows數(shù)據(jù)類型的地方加上宏判斷:
- #ifdefined(Q_WS_WIN)
- ... ...
- #endif
7、讓QtWebKit使用緩存
- QNetworkDiskCache *diskCache=newQNetworkDiskCache(this);
- QString location=QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
- diskCache->setCacheDirectory(location);
- this->ui->wndHtmlView->page()->networkAccessManager()->setCache(diskCache);
QDesktopServices::storageLocation(QDesktopServices::CacheLocation);返回的是系統(tǒng)的緩存目錄的路徑
8、windows eclipse中無法啟動(dòng) debug , 會(huì)報(bào)錯(cuò):
- gdb: unknown target exception 0xc0000135 at 0x7c984ed1
可能是因?yàn)橛?gdb.exe 啟動(dòng)你的程序時(shí)無法找到qt庫(kù)的dll, 只要在環(huán)境變量加入 qt/bin 的路徑就好了
9、windows7/vista 中的 UAC 支持
建一個(gè)資源文件 resource.rc ,內(nèi)容 :
- 1 24 "manifest.xml"
資源類型為 24 , id 為 1 ,資源內(nèi)容在 manifest.xml 中; manifest.xml 的內(nèi)容為:
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
- <assemblyIdentity
- version="1.0.0.0"
- processorArchitecture="X86"
- name="test.exe.manifest"
- type="win32"
- />
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
- </requestedPrivileges>
- </security>
- </trustInfo>
- </assembly>
在項(xiàng)目的 .pro (或 .pri) 文件中加入:
- RC_FILE = resource.rc
(RC_FILE 只在 windows 平臺(tái)上有效),然后 clean project 重新編譯。
10、exe 版本信息 ,在資源文件中加入:
- # if defined(UNDER_CE)
- # include <winbase.h>
- # else
- # include <winver.h>
- # endif
- VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,0
- PRODUCTVERSION 1,0,0,0
- FILEFLAGSMASK 0x3fL
- #ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
- #else
- FILEFLAGS 0x0L
- #endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
- BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904B0"
- BEGIN
- VALUE "CompanyName", "公司名字\0"
- VALUE "FileDescription", "文件描述\0"
- VALUE "FileVersion", "文件版本\0"
- VALUE "ProductName", "產(chǎn)品名字\0"
- VALUE "產(chǎn)品版本", "0.1.0\0"
- VALUE "LegalCopyright", "版權(quán)信息\0"
- END
- END
- END
- /* End of Version info */
小結(jié):WebKit是開源的Web瀏覽器引擎,WebKit支持移動(dòng)設(shè)備和手機(jī),包括iPhone和Android手機(jī)都是使用WebKit做為瀏覽器的核心。
【編輯推薦】