在运行时更改Qt中的语言

在运行时更改Qt中的语言,qt,translation,Qt,Translation,嗨,我有一个Qt应用程序,有几个插件连接到该应用程序 我想在运行时更改程序的语言,但我不知道怎么做 我知道我可以通过调用以下代码来实现: ui.retranslateUi(this); 但是,由于这些插件上有许多插件和许多小部件,因此很难编写此代码,因为成员ui在小部件中是私有的。 我不想为每个小部件类编写代码 你知道加载新翻译文件的更好方法吗 您可以将QEvent::LocaleChange发送给插件,但它们需要对此做出反应。只需使用所需语言的所有QTranslator实例和新实例即可。Qt

嗨,我有一个Qt应用程序,有几个插件连接到该应用程序

我想在运行时更改程序的语言,但我不知道怎么做

我知道我可以通过调用以下代码来实现:

ui.retranslateUi(this);
但是,由于这些插件上有许多插件和许多小部件,因此很难编写此代码,因为成员ui在小部件中是私有的。 我不想为每个小部件类编写代码


你知道加载新翻译文件的更好方法吗

您可以将
QEvent::LocaleChange
发送给插件,但它们需要对此做出反应。

只需使用所需语言的所有
QTranslator
实例和新实例即可。Qt将自动向应用程序中的所有视图发送LocaleChange事件,即使是插件中的视图。不需要手动发送这些事件。

即使它们有反应,我也应该为小部件类编写一些代码。我不能从插件类调用ui.retranslateUi。ui对于小部件类是私有的。