在程序中的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