我们的抗战百度云:C++:QT4.5.1中文乱码

来源:百度文库 编辑:中财网 时间:2024/05/02 07:51:19

C++:QT4.5.1中文乱码

[ 来源:C++技巧 | 作者:C++ | 时间:2011-12-1 | 去论坛]    - -



开始看蔡志明等编写的《精通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字符集!