1、在Qt中使用 WebKit 浏览器核心
使用 QtWebKit 需要在工程文件(*.pro)中加入:
1. QT +=webkit
2. QT += network
2、QtWebKit的flash支持
QtWebKit 到固定的路径(NPAPI插件厂商的安装路径)下载入flash控件,如果需要flash支持,确保一下文件存在:
1. 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 , 会报错:
1. gdb: unknown target exception 0xc0000135 at 0x7c984ed1
可能是因为用 gdb.exe 启动你的程序时无法找到qt库的dll, 只要在环境变量加入 qt/bin 的路径就好了
9、windows7/vista 中的 UAC 支持
建一个资源文件 resource.rc ,内容:
1. 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) 文件中加入:
1. RC_FILE = resource.rc
2. (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", "公司名字