2016年第一篇博客,新的一年新的开始,由于近一个月忙于另外一个项目,基本上没有时间更新博客。晚上回来收拾完已10点多。每天晚上抽出来半个小时,历时一个星期,今天终于将QT4的工程移植到QT5下。
由于QT的版本升级,导致很多代码出现不兼容情况,特别是汉字的支持,虽然网上很多有关QT5对汉字的支持,但是针对的项目和使用的方法不一样,不能使用“拿来主义”搞定出现的error。一切还要靠自己来解决。。。。
记录背景:移植过程中遇到最为棘手的问题,也就是调试时间最长的error记录下来,以便后期使用时做一个参考。
汉字。。。一切源头来源于汉字,一年前设计的项目,由于TCP和Modbus协议中需要有汉字的出现,最终导致今天出现的问题,最为一个程序员,我犯了最大的错误就是使用汉字,谨记此次的失误,日后不要出现。
1) QT5取消了QString对toAscii的支持。
原工程所有的toAscii,都将替换成toLatin1()。
2) 如果你升级后的QTCreator打开.c或者.h文件时没有对UTF-8有很好的支持,那么你就要辛苦一下:
在新版的creator重新建h文件和c文件。这个很重要,否则你即便使用对了函数,也未必能得到你想要的汉字。
3)如果QString中含有汉字,将其转变成QByteArray的方法:
QTextCodec *pCodec = QTextCodec::codecForName( "GBK" );
QByteArray data = pCodec->fromUnicode( strTCP );
4)如果char *中含有汉字,将其转成QString的方法:
QTextCodec *pCodec = QTextCodec::codecForName( "GBK" );
QString strQuery = pCodec->toUnicode(query);
其中query为char *型。
作者:小盒子
时间:2016-01-01 23:13PM
地点:大连
注:本文属小盒子原创,转载请与博主联系。谢谢合作