我正在尝试查找给定 QLocale::Country 值的国家/地区代码。在手册中,我只找到了这个函数,它做了类似的事情: QLocale::name



返回值的第二部分正是我需要的,所以我构造了以下函数:

QString getCountryCode(QLocale::Country c)
{
    return QLocale(QLocale::AnyLanguage, c).name().split('_').at(1).toLower();
}

奇怪的是,如果我按以下方式调用此函数:
qDebug() << getCountryCode(QLocale::Canada);

它将产生以下输出:
"us"

我期待“ca”!
另一方面,如果我这样称呼它:
qDebug() << getCountryCode(QLocale::Hungary);

那么它会产生正确的答案:
"hu"

我在这里缺少什么? (我正在使用 Qt 5.2)

最佳答案

一般来说,鉴于您想要的功能无法直接使用,请在 bugtracker 上添加 submit a feature request

除此之外, 您不能使用 AnyLanguage 构建 QLocale 对象。这完全没有意义——一个 QLocale 对象完全标识了一个特定的语言环境。它应该为加拿大选择哪一个, fr_CA 还是 en_CA

解决方法:使用

QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage,
                                                  QLocale::AnyScript,
                                                  QLocale::Canada);

然后获取列表中的第一个(如果存在)并像您一样提取国家/地区名称。

关于c++ - 获取 QLocale::Country 的国家代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24109270/

10-13 04:28