2011-11-30 46 views
0

在我的应用程序中,我有几个QDialog窗体。
当我安装和更改我的应用程序的翻译。 MainWindow已受到影响,但所有其他对话框均未更改为新Language.so,
如何在运行时(动态)更改所有窗体lang?
请帮我Qt App的动态变化翻译

void MainWindow::SetUILang() 
    { 
     QTranslator qtTranslator; 
     qtTranslator.load(QString("tr_fa"), "./Lang"); 
     qApp->installTranslator(&qtTranslator); 
     ui->retranslateUi(this); 

    } 

回答

0

如果动态地改变你的应用程序的语言,类型的changeEvent被发射。您必须抓住并重置您的文本(使用tr函数)>

void myclass::changeEvent(QEvent *event) { 
    if (event->type() == QEvent::LanguageChange) { 
     // Set all texts 
    } 
    else { 
     QWidget::changeEvent(event); 
    } 
} 
+0

在主窗口中。当用户点击信息按钮时。一个新的信息形式的实例创建并显示它,我已经添加changeEvent代码,但没有工作。 –

+0

如果您在更改语言后创建新实例,则应正确翻译所有文本。你是否用'tr'函数包含它们? – arne

+0

:是的,这是在UI设计师的形式,我被检查可翻译 –