vs2005+qt4 问题记录

vs2005+qt4 问题记录

一、QT中文乱码问题

       问题描述:QT界面程序中的中文都会显示乱码。

       解决方案:在QMainWindow子类构造函数里调用:

:QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));

       在要用到中文的地方使用tr()转换一下;

二、ifstream,ofstream打开中文路径出错

       问题描述:使用ifstreamofstream打开文件时,若文件路径中包含中文,则会打开失败。

       解决方案:在网上搜了下,解决方法主要有以下几种:

1         /*********************************************************************************/
2         /* 方法1,使用_TEXT()宏定义将字符串常量指定为TCHAR*类型,该方法只适用于字符串常量*/
3         /*********************************************************************************/
4         fstream file;
5         file.open(_TEXT("c:\\测试\\测试文本.txt"));
6         cout<<file.rdbuf();
7         file.close();

 


      

1     /************************************************************************/
 2         /* 方法2,使用STL中的locale类的静态方法指定全局locale                   */
 3         /* 使用该方法以后,cout可能不能正常输出中文,十分蹊跷                    */
 4         /* 勉强解决的方法:不要在还原区域设定前用cout或wcout 输出中文       */
 5         /* 否则后果就是还原区域设定后无法使用cout wcout输出中文                 */
 6         /************************************************************************/
 7         locale::global(locale(""));//将全局区域设为操作系统默认区域
 8         file.open("c:\\测试\\测试文本2.txt");//可以顺利打开文件了
 9         locale::global(locale("C"));//还原全局区域设定
10         cout<<file.rdbuf();
11         file.close();

 

1     /************************************************************************/
2         /* 方法3,使用C函数setlocale,不能用cout输出中文的问题解决方法同上      */
3         /************************************************************************/
4         setlocale(LC_ALL,"Chinese-simplified");//设置中文环境
5         file.open("c:\\测试\\测试文本3.txt");//可以顺利打开文件了
6         setlocale(LC_ALL,"C");//还原
7         cout<<file.rdbuf();
8         file.close();

 

1     /************************************************************************/
2     /* 方法4,适用于QT环境                            */
3     /************************************************************************/    
4     QFileDialog *dlg;
5     QString path = dlg->getOpenFileName();
6     file.open((wchar_t*)path.utf16());

 

三、QT应用程序图标修改

       1.找到.qrc文件,没有的就自己在工程目录下新建一个工程名.qrc”,在里面加入

1 <RCC>
2     <qresource prefix="/">
3 
4     </qresource>
5 </RCC>

 

       将该.qrc文件导入为vs2005工程资源,并在vs2005里打开,如图:


右键菜单里选择Add File,出来对话框,选择import,选择你要添加的图片,重新编译。如图



打开.rc文件,可以看到里面有一行:

IDI_ICON1             ICON             DISCARDABLE "test.ico"

test.ico改成你导入的ico

注:好像只支持.ico当图标,我用.png会提示错误。

四、应用程序发布

Release+动态链接

需要拷贝的动态链接库:

1 Microsoft.VC80.CRT.manifest //跟VC6不一样,这个必须有,不然会出现“由于应用程序配置不正确 应用程序未能启动”的错误
2 msvcp80.dll
3 msvcr80.dll
4 QtCore4.dll
5 QtGui4.dll

 

基本上就这几个,如果用到其他QT库,再另外添加。

posted @ 2009-09-07 17:57  icecryed  阅读(704)  评论(0编辑  收藏  举报