本文只描述Qt4的解决方法,Qt5没有尝试过,不做讨论。网上关于这个话题一搜一大堆,基本无外乎字符集编码的理论,看不明白。直接上代码吧!

        

#include "widget.h"
#include <QApplication>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));

    Widget w;
    w.show();

    return a.exec();
}

        一般我的项目里在 main.cpp 文件里都会加上这三句代码,中文显示都能正常显示。

        QTextCodec : 这个类提供文本编码之间的转换。

        QTextCodec::codecForLocale()->name() : 这个成员函数返回最适合此语言环境的编解码器的指针。

        QTextCodec::codecForName() :  这个成员函数返回与参数指定的名称最匹配的编解码器指针。如果没有匹配的则返回 0 。

         QTextCodec::setCodecForLocale / QTextCodec::setCodecForTr / QTextCodec::setCodecForCStrings :  这个成员函数设置参数指定的编解码器。

 

posted on 2020-08-14 09:07  Recreate  阅读(570)  评论(0编辑  收藏  举报