我正在尝试查找给定 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/