在编程过程中,如果需要在终端(命令行、对话框)打印出汉字,那么就要在application类中设置字符集,而且还需要调用QObject::tr()进行转换。否则程序中汉字会显示为乱码。
例子:
#include <qgb18030codec.h> // 必要
#include <locale.h> // 必要
int main(int argc, char* argv[])
{
#ifdef LINUX
setlocale(LC_ALL, ""); //在linux上需要调用否则会导致socket处理失败
#endif
QApplication* pApp = new QApplication ( argc, argv );
// 在application之后构造即可,且要保证codec在整个application生存期内可见
QGb18030Codec codec;
QTextCodec::setCodecForTr(&codec); // tr() 会使用此codec
QTextCodec::setCodecForLocale(&codec); // QString::fromLocal8Bit() 会使用此codec
QMessageBox::warning( NULL, tr("图形转换失败"), tr("请检查初始化文件!"));
}