QT当中出现中文的一些解决方案

本文探讨了在跨平台应用中遇到的中文显示乱码问题及解决方法,并详细介绍了如何解决使用SQLite数据库时无法连接的问题。通过将关键的codec插件复制到目标机器的特定目录下,可以解决中文显示乱码问题。对于数据库连接问题,则是通过在发布的应用程序目录下创建特定文件夹并复制相关驱动来实现。文章提供了具体的步骤和代码示例,帮助开发者轻松应对这些常见挑战。
摘要由CSDN通过智能技术生成

问题如下:
1.中文显示乱码
2.数据库连接不上

问题一:
但是如果我们的软件只运行在中文系统下,最简单的方法:在main函数中调用QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );就可以了。
记得这句要在所有使用tr的语句前调用。以后在需要使用中文的地方使用tr("中文字符");就可以了。但事情真的这么简单吗?当我将一个测试程序拷贝到一台没装过Qt的电脑上时,tr中的字都显示不了了。奇怪的是用Creater IDE生成的UI界面中的汉字能正常显示。看了qmake生成ui的.h文件,发现那些中文字符已经被自动转换成UTF8 encoding了。奇怪的是,QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );改为QTextCodec::setCodecForTr( QTextCodec::codecForName("utf-8") );也不行。没办法了,查资料,然后看了源代码。折腾了N久终于搞清楚了。
原来Codecs是以plugin的形式被调用的,显示中文的codec plugin文件是qcncodecs4.dll。里面有QGb18030Codec、QGbkCodec和QGb2312Codec三个类。注意,后两个类是从第一个类派生的,因为它们的字符只是Gb18030的特定子集。GBK和GB2312只是为了兼容旧的系统和软件。大家以后可以直接使用GB18030。这个类真正的“肉”就是巨长的一个编码数组。
既然找到了正主儿,那么问题也就迎刃而解了。将qcncodecs4.dll拷入目标机器的特定路径,如果你开发的电脑Qt安装目为C:\Qt的话,qcncodecs4.dll应该拷入目标电脑的C:\Qt\Plugins\Codecs。运行程序,看到了久违的汉字。
有没有更好的方法呢?在Qt(Cute)中当然有了
感谢Qt的plugin系统,将qcncodecs4.dll拷贝到运行程序目录下的特定目录,如运行程序完整路径为C:\MyApp\MyApp.exe,那么qcncodecs4.dll应拷贝至C:\MyApp\Plugins\Codecs下,然后在main函数中加入下面的代码:
QApplication a(argc, argv);
QString sPath = a.applicationDirPath();
sPath += QString("/plugins");
a.addLibraryPath(sPath);
一句话解决问题一首先,在发布的应用程序文件夹下建立Plugins\Codecs
          其次,将qcncodecs4.dll库文件放到Plugins\Codecs目录下

问题一补充:
  由于本人开发是在windows下开发,当移植到ARM板上时会显示乱码 即使我们加入QTextCodec::setCodecForTr( QTextCodec::codecForName("GBK") );这条语句也还是一样的乱码。因为不同平台字体编码格式不同。
   解决:将windows字体库拷贝到开发板fonts/目录下即可。同时支持最大字体显示
问题二:
程序使用sqlilte数据库,标机没有这个数据库驱动。所以导致连接数据库的时候连接不上。

解决办法如下:
1.在发布的应用程序文件夹下建立如下文件夹Plugins\sqldrivers
2.到QT安装目录下,例如本人安装目录C:\Qt\2009.05\qt\plugins\sqldrivers,将此目录下的所有文件拷贝到1目录下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值