Qt LanguageChange 事件 - 找出新的语言

Qt LanguageChange event - find out new language

当我的 changeEvent(QEvent* event) 接收类型为 event->type() == QEvent::LanguageChange 时,我如何获取有关我的应用程序中的新语言的信息?

您可以将翻译后的字符串与其已知译文进行比较:

void changeEvent(QEvent *event)
{
    if (event->type() == QEvent::LanguageChange) {
        QString translated = QCoreApplication::translate("some context", "Button");
        if (translated == "Button")
            // language is English
        else if (translated == "Кнопка")
            // language is Russian
        ...
    }
}

Qt 没有任何对象来表示应用程序语言。所以你应该自己实现它。

通常 changeEvent(QEvent* event) 类型 QEvent::LanguageChange 是由 installTranslator(QTranslator*) 引起的,所以您应该知道 您加载到翻译器并存储在本地的语言。