问题描述
- 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_1SIGNAL(clicked())thisSLOT(LangChanged1()));
connect(b_2SIGNAL(clicked())thisSLOT(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(QmNameexePath))
{
qApp->installTranslator(translator);
}
updateUi();
}void MainWindow::LangChanged2()
{
QString exePath=QApplication::applicationDirPath();
QString QmName;
QmName=""english.qm"";
if(translator->load(QmNameexePath))
{
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""