注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小盒子的小盒

知道的越多不知道的就越多

 
 
 

日志

 
 

【原创】QT4升级到QT5  

2016-01-01 23:13:00|  分类: QT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
2016年第一篇博客,新的一年新的开始,由于近一个月忙于另外一个项目,基本上没有时间更新博客。晚上回来收拾完已10点多。每天晚上抽出来半个小时,历时一个星期,今天终于将QT4的工程移植到QT5下。
由于QT的版本升级,导致很多代码出现不兼容情况,特别是汉字的支持,虽然网上很多有关QT5对汉字的支持,但是针对的项目和使用的方法不一样,不能使用“拿来主义”搞定出现的error。一切还要靠自己来解决。。。。
记录背景:移植过程中遇到最为棘手的问题,也就是调试时间最长的error记录下来,以便后期使用时做一个参考。
汉字。。。一切源头来源于汉字,一年前设计的项目,由于TCP和Modbus协议中需要有汉字的出现,最终导致今天出现的问题,最为一个程序员,我犯了最大的错误就是使用汉字,谨记此次的失误,日后不要出现。

1) QT5取消了QStringtoAscii的支持。
      原工程所有的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);
    其中querychar  *型。

作者:小盒子
时间:2016-01-01 23:13PM
地点:大连


注:本文属小盒子原创,转载请与博主联系。谢谢合作


  评论这张
 
阅读(357)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017