一、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里打开,如图:
右键菜单里选择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库,再另外添加。