分类: LINUX
2011-11-30 11:26:38
开始看蔡志明等编写的《精通Qt4编程》一书,第一个例子就出现了问题,例子运行结果如下:
其源代码为:
#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分别编辑,运行后中文显示乱码,如下图:
经过不停的查资料,终于找到解决的方法了:
方法一:
将这行代码:
label.setText(QObject::tr("同一个世界,同一个梦想!"));
修改为:
label.setText(QString::fromUtf8("同一个世界,同一个梦想!"));
结果显示就对了!
方法二:
将这行代码:
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
修改为:
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
结果就对了!
这两种方法,都是使用了utf8字符集!