当前位置: 代码迷 >> QT开发 >> Qt程序中部分地方支持汉语,部分地方不支持
  详细解决方案

Qt程序中部分地方支持汉语,部分地方不支持

热度:19   发布时间:2016-04-25 04:42:41.0
Qt程序中部分地方支持中文,部分地方不支持
在程序中的main函数里设置了:
C/C++ code
int main(int argc, char *argv[]){    QApplication a(argc, argv);    QTextCodec *codec = QTextCodec::codecForName("utf-8");    QTextCodec::setCodecForLocale(codec);    QTextCodec::setCodecForCStrings(codec);    QTextCodec::setCodecForTr(codec);    MainWindow w;   //我自己写的类    w.setWindowTitle("中文"); //这里不写在tr("")中也可以正常显示,不知为何    w.show();    return a.exec();}


MainWindow类包含了一个GameWidget类实体,
在GameWidget类中的mousePressEvent函数里如果我想要
QMessageBox::about(NULL,tr("恭喜你!"),tr("恭喜白色玩家赢了!\n请退出"));
就是乱码

实在迷惑

------解决方案--------------------
尝试过把utf8换成gbk没?
------解决方案--------------------
QTextCodec::setCodecForTr(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(QTextCodec::codecForLocale()->name()));

试试这种写法
------解决方案--------------------
要把中文字体库包含进来,Qt的安装目录下的这个目录plugins
C/C++ code
QApplication::addLibraryPath("./plugins");QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));  QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));  QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
------解决方案--------------------
记得转换的QString 都用tr() 或者Q0bject::tr
------解决方案--------------------
http://wangningmei.is-programmer.com/posts/32988.html
  相关解决方案