我熟悉了Qt中语言环境和翻译的危险。实际上,我最难意识到的是 order 本地化如何运作:
QLocale
中所示)可以自发地改变,QTranslator
中所述)可能会将更改为更改为区域设置。因此,对于Qt,这意味着安装/删除QTranslators
将导致QEvent::LanguageChange
类型的事件发布到QApplication
实例,而后者将通过所有小部件传播它
从QApplication
来源我了解到类型QEvent::LocaleChange
的事件也会通过所有小部件传播。这对我来说似乎很合理。
但是,我在Qt源中找不到一个地方,那个类型的事件实际上是发布的。 Qt如何以及特别是在哪里对底层操作系统的区域设置更改做出反应?
如何更改应用程序的区域设置?显而易见的方法似乎是使用QLocale::setDefault()
设置默认语言环境,然后手动将QEvent::LocaleChange
发布到QApplication
实例...