关于Linux下 QT程序中文乱码的有关问题

求助 关于Linux下 QT程序中文乱码的问题
首先我是在WIN XP下用QT creater编写的程序,然后在虚拟机Ubuntu 12.04下编译运行。控制终端用的是Xshell。
以下是部分代码
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
//    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("gb18030"));
//    QTextCodec::setCodecForLocale(QTextCodec::codecForName("gb18030"));
    //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");

        QTextCodec::setCodecForTr(codec);

        QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
        QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());


else if(strcmp(buf[0], "TEXT") == 0)
                {
                    //sndm.text = QString(QLatin1String(buf[1]));
                    sndm.text = QString(buf[1]);
                    //sndm.text = QString::fromAscii(buf[1]);
                    qDebug()<<"sndm.text="<<sndm.text;
                }

通过读取本地文件获取到信息,解析过程中将char转化成QString并通过信号与槽传递给另一个类

在另一个类中:将text内容通过bu显示出来,bu为一个toolbutton
if( !(m.text.isEmpty()) )
        {
            qDebug()<<"`````text="<<m.text;
            bu->setText(m.text);
        }


最后显示如下:
虚拟机开启终端中直接运行:
关于Linux下 QT程序中文乱码的有关问题

通过Xshell运行:
关于Linux下 QT程序中文乱码的有关问题

终端部分打印信息:
关于Linux下 QT程序中文乱码的有关问题

做了各种编码相关的尝试,始终不能显示正确的中文···
求大侠们帮忙看看到底是什么原因,以及解决办法,谢谢!
------解决方案--------------------
 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
 

------解决方案--------------------
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());        
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
这两行改为:
QTextCodec::setCodecForLocale(codec);        
QTextCodec::setCodecForCStrings(codec);
------解决方案--------------------
你试下这个,Qt creator的源代码编码是utf-8的, QString text = QString::fromUtf8("中文");直接告诉你要赋值的QString你这个字符串是怎么编码的。