找回密码
 立即注册
收起左侧

求助,中文显示的问题

6
回复
8285
查看
[复制链接]
累计签到:13 天
连续签到:1 天
来源: 2013-8-28 01:22:14 显示全部楼层 |阅读模式
1Qter豆
这个是书上的例子。
#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char **argv)
{
    QApplication a(argc,argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QDialog w;
    w.resize(400,300);
    QLabel label(&w);
    label.move(120,120);
    label.setText(QObject::tr("helloQt,你好Qt"));
    w.show();
    return a.exec();
}

书上的例子,说是能显示中文
但实际上中文的地方还是乱码。




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());设置之后 label.setText(QObject::tr("helloQt,你好Qt")); 修改为 label.setText("helloQt,你好Qt"); 后面加上QTextCodec::setCodecForLocale(QTextCodec::codecForLocale()); 这个这么清楚 还看不懂? 我每次写程序,在main函数里面都是这样写的 QTextCodec *codec = QTextCodec::codecForLocale(); QTextCodec::setCodecForTr(codec); QTextCodec::setC ...
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-8-28 01:22:15 显示全部楼层
very0717 发表于 2013-8-28 13:09
这样是没问题的。我也是改成utf-8

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());设置之后

label.setText(QObject::tr("helloQt,你好Qt"));  
修改为
label.setText("helloQt,你好Qt");

后面加上QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
这个这么清楚
还看不懂?
我每次写程序,在main函数里面都是这样写的
QTextCodec *codec = QTextCodec::codecForLocale();
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2013-8-28 07:04:15 显示全部楼层
建议把
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
改成
    QTextCodec::setCodecForTr(QTextCodec::codecForName(“utf8”));
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2013-8-28 10:36:30 显示全部楼层
嗯,新版本的Qt需要像楼上说的那样设置。

另外,如果下载了网站上的源码出现乱码,需要先选择 system 或 GB18030的编码进行导入,然后再去 编辑->选择编码 中设置UTF-8 ,重新保存一下,完成后,再次去 编辑->选择编码 中设置UTF-8,然后选择 按编码重新打开 即可。
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-8-28 12:23:23 显示全部楼层
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());设置之后
label.setText(QObject::tr("helloQt,你好Qt"));修改为label.setText("helloQt,你好Qt");
后面加上QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
回复

使用道具 举报

累计签到:13 天
连续签到:1 天
2013-8-28 13:07:23 显示全部楼层
a408815041 发表于 2013-8-28 12:23
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());设置之后
label.setText(QObject::tr("helloQt, ...

有点不明白你的意思,能不能详细说一下
回复

使用道具 举报

累计签到:13 天
连续签到:1 天
2013-8-28 13:09:10 显示全部楼层
Syylc120317 发表于 2013-8-28 07:04
建议把
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
改成

这样是没问题的。我也是改成utf-8

点评

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());设置之后 label.setText(QObject::tr("helloQt,你好Qt")); 修改为 label.setText("helloQt,你好Qt"); 后面加上QTextCodec::setCodecForLocale(QTextC  详情 回复 发表于 2013-8-28 15:07
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了