发布中文Qt程序时要注意的问题

用Qt写好了程序,并撰写了中文的语言文件(.qm文件) 后,发布到没有安装过Qt的系统上时,却发现只有固定的界面文字中的中文能正常显示,而程序运行过程中保存到诸如txt、xml文件中的中文却变成了奇怪的编码,而读回时就会变成“?”。

经过研读Qt的文档,总算知道了原因,那是因为对于中文之类的特殊编码文字,Qt系统中是使用相应的TextCodec来进行Unicode到本地编码(GB2312,GB18030等)的转换的,而这个TextCodec并不是静态编译到Qt的几个库文件中的,而是在编译完Qt系统后,以Plugin的形式出现在 /qt/plugins/codecs 目录下,如简体中文的Codec库文件名为:qcncodecs4.dll,而我发布Qt程序时只安装了Qt的几个主文件(QtCore4.dll,QtGui4.dll),所以造成了该系统上缺少中文Codec的问题。

解决方法很简单,有多种方法:
1)将以上的中文编码库文件安装到可执行程序的目录下的 codecs 目录下,程序启动时,QtCore中的初始化过程会自动找到该目录并加载到内存中。
2)在Qt程序启动时,用代码指定Qt的Library搜索路径。
3)编写qt.config文件,放在可执行文件的目录下,并在其中定义Codecs的路径。
4)对于用static编译的Qt,在主程序文件中写上这句宏指令:Q_IMPORT_PLUGIN(qcncodecs),并在Link中加入相应的LIB文件。
具体内容我不多说了,看Qt文档吧: doc/html/plugins-howto.html

另外,Qt的图像解码系统也是用Plugin的方式提供的,如果忘了复制如jpeg,gif之类的解码库的话,程序将只能显示bmp和png的图片了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值