QT Webkit开发学习笔记是本文要介绍的内容,主要是来学习QT中webkit的学习使用方法,具体内容的实现来看本文详解。
1、在Qt中使用 WebKit 浏览器核心
使用 QtWebKit 需要在工程文件(*.pro)中加入:
1. QT +=webkit 2. QT += network
2、QtWebKit的flash支持
QtWebKit 到固定的路径(NPAPI插件厂商的安装路径)下载入flash控件,如果需要flash支持,确保一下文件存在:
C:WINDOWSsystem32MacromedFlashNPSWF32.dll
npswf32.dll就是 QtWebKit 需要的flash插件,由 micromedia 官方提供。
3、使用qt插件
分发程序时,需要打包 qtpluginsimageformats 目录内的 dll 文件(它们是qt的图形图像插件),才能支持 jpg、png、gif等的图形图像格式;最好连 pluginscodecs 目录内的dll文件一起打包,他们是用来支持各种语言编码的(包括中文支持);除此以外还有其他一些qt插件。
4、如果使用了qt插件,需要设置qt插件路径
qt应用程序需要指定加载qt插件的目录,以便载入上面提到的 pluginsimageformats 、pluginscodecs 等目录内的dll文件。
标准方式是通过 qt.conf 文件(放在qt应用程序相同文件夹内)设置插件目录的路径。但是qt.conf内必须使用绝对路径,这不太容易确定。
可以直接在应用程序内指定 qt插件的路径,例如:
1. QApplication aApp(argc,argv); 2. QApplication::setLibraryPaths(QStringList(QCoreApplication::applicationDirPath()+"/plugins/"));
在调用 QCoreApplication::applicationDirPath() 前,必须先创建一个 QApplication的对象
5、中文支持:
1. QTextCodec *codec=QTextCodec::codecForName("GB2312"); 2. QTextCodec::setCodecForLocale(codec); 3. QTextCodec::setCodecForCStrings(codec); 4. QTextCodec::setCodecForTr(codec);
6、使用 windows api
只要 #include<windows.h>就可以向MFC一样使用windows的api 函数,以及windows的数据类型,例如:LPCTSTR。
为了保持跨平台特性,在用到windows api 函数和 windows数据类型的地方加上宏判断:
1. #ifdefined(Q_WS_WIN) 2. ... ... 3. #endif
7、让QtWebKit使用缓存
1. QNetworkDiskCache *diskCache=newQNetworkDiskCache(this); 2. QString location=QDesktopServices::storageLocation(QDesktopServices::CacheLocation); 3. diskCache->setCacheDirectory(location); 4. this->ui->wndHtmlView->page()->networkAccessManager()->setCache(diskCache); 5. QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
返回的是系统的缓存目录的路径
8、windows eclipse中无法启动 debug , 会报错:
gdb: unknown target exception 0xc0000135 at 0x7c984ed1
可能是因为用 gdb.exe 启动你的程序时无法找到qt库的dll, 只要在环境变量加入 qt/bin 的路径就好了
9、windows7/vista 中的 UAC 支持
建一个资源文件 resource.rc ,内容:
1 24 "manifest.xml"
资源类型为 24 , id 为 1 ,资源内容在 manifest.xml 中; manifest.xml 的内容为:
1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 3. <assemblyIdentity 4. version="1.0.0.0" 5. processorArchitecture="X86" 6. name="test.exe.manifest" 7. type="win32" 8. /> 9. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 10. <security> 11. <requestedPrivileges> 12. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 13. </requestedPrivileges> 14. </security> 15. </trustInfo> 16. </assembly>
在项目的 .pro (或 .pri) 文件中加入:
RC_FILE = resource.rc
(RC_FILE 只在 windows 平台上有效)
然后 clean project 重新编译
10、exe 版本信息 ,在资源文件中加入:
1. # if defined(UNDER_CE) 2. # include <winbase.h> 3. # else 4. # include <winver.h> 5. # endif 6. 7. VS_VERSION_INFO VERSIONINFO 8. FILEVERSION 1,0,0,0 9. PRODUCTVERSION 1,0,0,0 10. FILEFLAGSMASK 0x3fL 11. #ifdef _DEBUG 12. FILEFLAGS VS_FF_DEBUG 13. #else 14. FILEFLAGS 0x0L 15. #endif 16. FILEOS VOS__WINDOWS32 17. FILETYPE VFT_DLL 18. FILESUBTYPE 0x0L 19. BEGIN 20. BLOCK "StringFileInfo" 21. BEGIN 22. BLOCK "040904B0" 23. BEGIN 24. VALUE "CompanyName", "公司名字 " 25. VALUE "FileDescription", "文件描述 " 26. VALUE "FileVersion", "文件版本 " 27. VALUE "ProductName", "产品名字 " 28. VALUE "产品版本", "0.1.0 " 29. VALUE "LegalCopyright", "版权信息 " 30. END 31. END 32. END 33. /* End of Version info */