|
1Qter豆
你好!我现在在做一个QT的动态语言切换,用的是一些教程中提到的:QTranslator 加载load对应ts翻译后的qm文件,然后retranslateUi重新翻译界面。
如上图,主要是3个QAction触发changeLanguage槽函数。
connect(ui->action_1,SIGNAL(triggered()),this,SLOT(changeLanguage()));
connect(ui->action_2,SIGNAL(triggered()),this,SLOT(changeLanguage()));
connect(ui->action_3,SIGNAL(triggered()),this,SLOT(changeLanguage())); void MainWindow::changeLanguage()
{
QTranslator translator;
QAction* radio = qobject_cast<QAction*>(sender());
qDebug() << "reciver"<<endl;
if(radio == ui->action_1)
{
ui->retranslateUi(this);
qDebug() << "en"<<endl;
}
else if(radio == ui->action_2)
{
translator.load(":/new/tr_zh_CN.qm");
qApp->installTranslator(&translator);
ui->retranslateUi(this);
qDebug() << "cn"<<endl;
}
else
{
translator.load(":/new/tr_zh_HK.qm");
qApp->installTranslator(&translator);
ui->retranslateUi(this);
qDebug() << "hk"<<endl;
}
} 但是我现在遇到一个问题是,我在我原来这个工程中添加了一个新的QT界面类QDialog,在原来的mainwindow类中建立了QDialog的对象test,在菜单栏Edit中会触发test的show函数;我用预言家linguist翻译的时候mainwindow和Dialog的界面都翻译了的,但是切换语言的时候mainwindow 是可以的,QDialog这个对象的语言却切换不了。请问应该怎么做才能让QDialog这个对象随着QMainwindow的语言切换一起切换?十分谢谢!
|
最佳答案
查看完整内容
你可以把切换语言时emit一个信号并把你切换的语言类型发送过去,与你要变换语言的窗口的更换语言slot关联起来就可以实行的,这个不难的吧.
例:你在你的mainwindow选择语言时会产生signal的吧?
你的窗口可以加一个slot , void change_trans(int nType){
switch(nType)
{
case 中文: 更新语言为中文;
break;
case 英文: 更新语言为英文;
break;
}
}
你把你要变更的窗口加上那个slot并并联,就可以了。 ...
|