Chinaunix首页 | 论坛 | 博客
  • 博客访问: 977145
  • 博文数量: 145
  • 博客积分: 1302
  • 博客等级: 中尉
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-07 16:00
文章分类

全部博文(145)

文章存档

2018年(1)

2016年(1)

2015年(6)

2014年(4)

2013年(59)

2012年(32)

2011年(36)

2009年(1)

2007年(2)

2006年(3)

分类: LINUX

2011-11-30 11:26:38

开始看蔡志明等编写的《精通Qt4编程》一书,第一个例子就出现了问题,例子运行结果如下:

QT4.5.1中文乱码

 

其源代码为:
#include
#include
#include
#include
#include
#include
int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
    QWidget* pWidget = new QWidget;
    QLabel label(pWidget);
    label.setText(QObject::tr("同一个世界,同一个梦想!"));
    QPushButton* btn = new QPushButton(QObject::tr("关闭"), pWidget);
    QVBoxLayout* layout = new QVBoxLayout;
    layout->addWidget(&label);
    layout->addWidget(btn);
    pWidget->setLayout(layout);
    QObject::connect(btn, SIGNAL(clicked()), pWidget, SLOT(close()));
    pWidget->show();
    return app.exec();
}

我用vim和KDeveloper分别编辑,运行后中文显示乱码,如下图:

QT4.5.1中文乱码

经过不停的查资料,终于找到解决的方法了:

方法一:

将这行代码:

label.setText(QObject::tr("同一个世界,同一个梦想!"));

修改为:

label.setText(QString::fromUtf8("同一个世界,同一个梦想!"));

结果显示就对了!

方法二:

将这行代码:

 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
修改为:

 QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
结果就对了!

这两种方法,都是使用了utf8字符集!

阅读(4552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~