• 11711阅读
  • 9回复

[提问]Qtcreator 编写出来的对话框为什么不能显示中文呢? [复制链接]

上一主题 下一主题
离线hurricanhup
 

只看楼主 倒序阅读 楼主  发表于: 2012-11-07
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
刚刚把书上的一个对话框的程序输入到qtcreator,只是把里面的text从英文改成了中文,但运行后,要显示的中文却是乱码。这是为什么呢?如何才能显示中文呢?我是菜鸟,希望大侠们指教。下面是一部分源程序和对话框截图。
void ExtensionDlg::initBasicInfo(){   baseWidget=new QWidget;   QLabel *nameLabel=new QLabel(tr("姓名"));   QLineEdit *nameEdit=new QLineEdit;   QLabel *sexLabel=new QLabel(tr("性别"));   QComboBox *sexComboBox=new QComboBox;   sexComboBox->addItem(tr("男"));   sexComboBox->addItem(tr("女"));   QPushButton *okButton=new QPushButton(tr("确定"));   QPushButton *detailButton=new QPushButton(tr("详细"));   connect(detailButton,SIGNAL(clicked()),this,SLOT(slot2Extension()));   QDialogButtonBox *btnBox=new QDialogButtonBox(Qt::Horizontal);   btnBox->addButton(okButton,QDialogButtonBox::ActionRole);   btnBox->addButton(detailButton,QDialogButtonBox::ActionRole);   QFormLayout *formLayout=new QFormLayout;   formLayout->addRow(nameLabel,nameEdit);   formLayout->addRow(sexLabel,sexComboBox);   QVBoxLayout *vboxLayout=new QVBoxLayout;   vboxLayout->addLayout(formLayout);   vboxLayout->addWidget(btnBox);   baseWidget->setLayout(vboxLayout);
}
可是生活之河却仍在那阴森森的两岸之间流着,而火光也依旧非常遥远。因此,必须加劲划桨……
        然而,火光啊……毕竟……毕竟就在前头!……
离线hehuim

只看该作者 1楼 发表于: 2012-11-07
离线jdwx

只看该作者 2楼 发表于: 2012-11-07
代码里不要有中文,也就是不要ASCII之外的其它文字,否则会发生编译问题。
之后在进行翻译,翻译成其它的语言。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wb19861202
只看该作者 3楼 发表于: 2012-11-07
你在main函数中加入QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

离线roywillow

只看该作者 4楼 发表于: 2012-11-07
除非你用Qt5,源码用UTF-8编码,否则就别用中文
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线hurricanhup

只看该作者 5楼 发表于: 2012-11-07
用了hehuim链接里的第一种方法,问题解决了。第二种方法不知道在哪找qcncodecs.dll,第三种方法挺好的,但有点复杂。在win7中感觉还是用第一种方法比较简单。总之谢谢各位大侠的指点。
可是生活之河却仍在那阴森森的两岸之间流着,而火光也依旧非常遥远。因此,必须加劲划桨……
        然而,火光啊……毕竟……毕竟就在前头!……
离线xuxb
只看该作者 6楼 发表于: 2012-11-08
引用第3楼wb19861202于2012-11-07 21:49发表的  :
你在main函数中加入QTextCodec::setCodecForTr(QTextCodec::codecForLocale());


正确
承接C/C++ MFC Qt  网络通信等项目!!!
离线wchflchy
只看该作者 7楼 发表于: 2012-11-08
我用过最简单的办法就是使用translate函数,最近我也遇到类似的问题,看了UI头文件里面就是用这个函数实现的
QT新手上路
离线shuihan20e

只看该作者 8楼 发表于: 2012-11-08
#include "QTextDecoder"
在main函数中加入QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

离线似水流年

只看该作者 9楼 发表于: 2012-11-08
在QApplication app(argc, argv);
之后添加代码:
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb1832"));
快速回复
限100 字节
 
上一个 下一个