vs2005+qt4 问题记录

一、QT中文乱码问题

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

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

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

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

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

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

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

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里打开,如图:

vs2005+qt4 问题记录_第1张图片

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

vs2005+qt4 问题记录_第2张图片

vs2005+qt4 问题记录_第3张图片

打开.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库,再另外添加。

你可能感兴趣的:(vs2005+qt4 问题记录)