• 5856阅读
  • 6回复

关于按钮文本的编码问题,急.........在线等....... [复制链接]

上一主题 下一主题
离线xutianming
 
只看楼主 正序阅读 楼主  发表于: 2009-03-06
先是设置它的文本  
QTextCodec * codec = QTextCodec::codecForName("GBK") ;
PushButton1->setText(QString::fromLocal8Bit("广州"));
或者
PushButton1->setText(QString::fromUtf8("广州"));
或者
PushButton1->setText(codec->toUnicode("广州"));

上面的方法都试过,然后提取它的文本
QString CityName = PushButton1->text();
printf("CityName = %s \n", CityName.latin1());
打印出来是空的,然后把它传给另一个程序
memcpy(air_ticket_queryForm::air_ticket_query_ptr->CityName ,CityName ,strlen(CityName)) ;
air_ticket_queryForm::air_ticket_query_ptr->CityName[strlen(CityName)] = '\0' ;
然后在另一个程序中打印出来,并给一个LINEEDIT
void air_ticket_queryForm::initA()
{
           printf("CityName = %s \n",CityName);
           StartCityLineEdit_1->setText(CityName);
}
我试了好多方法,最后从StartCityLineEdit_1显示出来不是空的就是乱码,我想可能是编码不统一吧,情各位帮忙......
只看该作者 6楼 发表于: 2009-03-06
引用第5楼算了不说了于2009-03-06 11:17发表的  :
一直有个疑问,为什么QString 无法直接返回一个char *  而string 可以
QString 要转换成char * 还要分两步  QString::toLatin1 返回是个 QByteArry ,然后这个类里的data()返回值才是char *
为什么QT不让QString 直接能返回char *呢?

QString存字符用的是unicode,内建单元是QChar,和char大小都不符,转char还需要一个转码过程
只看该作者 5楼 发表于: 2009-03-06
一直有个疑问,为什么QString 无法直接返回一个char *  而string 可以

QString 要转换成char * 还要分两步  QString::toLatin1 返回是个 QByteArry ,然后这个类里的data()返回值才是char *

为什么QT不让QString 直接能返回char *呢?
只看该作者 4楼 发表于: 2009-03-06
memcpy(air_ticket_queryForm::air_ticket_query_ptr->CityName ,CityName ,strlen(CityName)) ;
air_ticket_queryForm::air_ticket_query_ptr->CityName[strlen(CityName)] = '\0' ;

这是什么?如果是做QString之间的赋值直接等号
如果是QString到char的赋值,你也不能直接把QString的内容memcpy给一个char*啊
不是编码问题
离线xutianming
只看该作者 3楼 发表于: 2009-03-06
引用第2楼浪漫天使于2009-03-06 10:38发表的  :
把它传给另一个程序
是什么意思?你有两个程序同时运行?

把值传给别的程序而已!
离线浪漫天使
只看该作者 2楼 发表于: 2009-03-06
把它传给另一个程序
是什么意思?你有两个程序同时运行?
离线xutianming
只看该作者 1楼 发表于: 2009-03-06
UP!
快速回复
限100 字节
 
上一个 下一个