QT国际化动态转换:为什么转换不了呢

#include "mainwindow.h"
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
b_1(NULL),
b_2(NULL),
translator(NULL)
{
translator=new QTranslator;
b_1=new QPushButton(this);
b_2=new QPushButton(this);
connect(b_1,SIGNAL(clicked()),this,SLOT(LangChanged1()));
connect(b_2,SIGNAL(clicked()),this,SLOT(LangChanged2()));
updateUi();

}
void MainWindow::updateUi()
{
setWindowTitle(tr("Main Frame"));
b_1->setText(tr("中文"));
b_2->setText(tr("english"));
b_1->setGeometry(10, 30, 80, 30);
b_2->setGeometry(110, 30, 80, 30);

}

void MainWindow::LangChanged1()
{
QString exePath=QApplication::applicationDirPath();
QString QmName;
QmName="chinese.qm";
if(translator->load(QmName,exePath))
{
qApp->installTranslator(translator);
}
updateUi();
}

void MainWindow::LangChanged2()
{
QString exePath=QApplication::applicationDirPath();
QString QmName;
QmName="english.qm";
if(translator->load(QmName,exePath))
{
qApp->installTranslator(translator);
}
updateUi();
}

MainWindow::~MainWindow()
{

}

两个槽函数虽然都加载了语言文件,但接着又调用了updateUi()

 void MainWindow::updateUi()
{
    setWindowTitle(tr("Main Frame"));
    b_1->setText(tr("中文"));
    b_2->setText(tr("english"));
    b_1->setGeometry(10, 30, 80, 30);
    b_2->setGeometry(110, 30, 80, 30);
}

所以b_1一直显示"中文", b_2一直显示"english"

Qt之国际化