#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"