Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 谁发送QEvent::LocaleChange?_C++_Qt - Fatal编程技术网

C++ 谁发送QEvent::LocaleChange?

C++ 谁发送QEvent::LocaleChange?,c++,qt,C++,Qt,我熟悉Qt中的语言环境和翻译的危险。对我来说,最难理解的是本地化的工作顺序: 区域设置(如QLocale)可以自动更改 语言(如QTranslator)可能会随着语言环境的变化而变化 因此,对于Qt来说,这意味着安装/删除QTranslators将导致类型为QEvent::LanguageChange的事件发布到QApplication实例,该实例反过来将通过所有小部件传播该事件 从QApplication源代码中,我了解到QEvent::LocaleChange类型的事件也会通过所有小部件传播

我熟悉Qt中的语言环境和翻译的危险。对我来说,最难理解的是本地化的工作顺序:

  • 区域设置(如
    QLocale
    )可以自动更改
  • 语言(如
    QTranslator
    )可能会随着语言环境的变化而变化
  • 因此,对于Qt来说,这意味着安装/删除
    QTranslators
    将导致类型为
    QEvent::LanguageChange
    的事件发布到
    QApplication
    实例,该实例反过来将通过所有小部件传播该事件

    QApplication
    源代码中,我了解到
    QEvent::LocaleChange
    类型的事件也会通过所有小部件传播。这在我看来是合理的

    然而,我在Qt源代码中找不到一个地方实际发布了这种类型的事件。Qt如何,特别是在哪里对底层操作系统的语言环境变化做出反应

    如何更改应用程序的区域设置?显而易见的方法似乎是使用
    QLocale::setDefault()
    设置默认区域设置,然后手动将
    QEvent::LocaleChange
    发布到
    QApplication
    实例中