Qt tr()翻译 加载 问题

关于Qt 多语言的问题

   加载qm时,有些没有翻译过来,显示的还是原本的! 是这样的,我想把所有成员变量写在一个类中,这些成员变量是公共 的,供其它类来访问修改,那么问题来了:在其它类中调用全局变量或全局类后翻译后,加载时没有翻译过来,都保持了原样;  网上说的大部分资料我都看过,大部分针对的是乱码问题,对于我这种形式的介绍的比较少,我不知道怎么办,所以来求助各位大侠:

 代码抽出来了,简化成以下示例:

test.pro:

  QT += core gui
TARGET = Test
TEMPLATE = app
SOURCES += main.cpp test.cpp global.cpp
HEADERS  += test.h global.h
FORMS    += test.ui
TRANSLATIONS =  test.ts
RESOURCES +=  test.qrc

全局类:
global.h:

 #ifndef GLOBAL_H
#define GLOBAL_H
#include <QString>
class Global
{
public:
    Global();
    QString strTest;
};

**global.cpp:**
extern Global myGlobal;
#endif // GLOBAL_H

#include "global.h"
#include <QObject>
Global myGlobal;
Global::Global()
{
    strTest = QObject::tr("Text");
};

测试类:
test.h:

#ifndef TEST_H
#define TEST_H

#include <QDialog>

namespace Ui {
    class Test;
}

class Test : public QDialog
{
    Q_OBJECT

public:
    explicit Test(QWidget *parent = 0);
    ~Test();

private:
    Ui::Test *ui;
};

#endif // TEST_H 

test.cpp:

 #include "test.h"
#include "ui_test.h"
#include "global.h"
Test::Test(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Test)
{
    ui->setupUi(this);

    //文字还是翻译前的,没有进行更新:
    ui->lbTest->setText(myGlobal.strTest);

    //如果定义一个局部变量,是可以成功显示翻译后的文本,但是这样没用呀,因为这个类变量要是全局的,其它类也要访问和修改:
   //Global test;
    //ui->lbTest->setText(test.strTest);
}

Test::~Test()
{
    delete ui;
}

test.ui:就加一个标签控件,用于显示文本

 <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Test</class>
 <widget class="QDialog" name="Test">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Test</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="lbTest">
     <property name="text">
      <string/>
     </property>
     <property name="alignment">
      <set>Qt::AlignCenter</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

Main.cpp:

 #include <QtGui/QApplication>
#include "test.h"
#include <QTextCodec>
#include <QTranslator>

QTranslator *myTranslator;

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

    myTranslator = new QTranslator();
    myTranslator->load(":/test.qm");
    a.installTranslator(myTranslator);

    Test w;
    w.show();

    return a.exec();
}


用Qt Linguist 将文本“Text”翻译成“Update Text”:

编译运行,没有变化,显示的还是原“Text”!

如果在test类中定义局部变量,就会成功,显示的是翻译后的(但是局部的没用,不是我想要的,我需要的是全局的):

期间:
文件编码用GB2312和UTF-8都试过,翻译都无效!
tr编码用GB2312和UTF-8都试过,翻译也都无效!

头疼呀 ,请各位大侠赐教,谢谢!

参考:http://www.cnblogs.com/chuncn/archive/2012/06/04/2534898.html