我试图为给定的QLocale::国家值找到国家代码。在手册中,我只找到了这个函数,它执行类似的操作:QLocale::名称。
QString QLocale::name () const 以"language_country“形式返回该地区的语言和国家,其中语言是小写,两个字母的ISO 639语言代码,国家是大写字母,两个或三个字母的ISO 3166国家代码。
返回值的第二部分正是我所需要的,因此我构造了以下函数:
QString getCountryCode(QLocale::Country c)
{
return QLocale(QLocale::AnyLanguage, c).name().split('_').at(1).toLower();
}奇怪的是,如果我以以下方式调用此函数:
qDebug() << getCountryCode(QLocale::Canada);它将产生这样的产出:
"us"我早就料到会有“卡”!另一方面,如果我这样说:
qDebug() << getCountryCode(QLocale::Hungary);然后,它将得出正确的答案:
"hu"我在这里错过了什么?(我使用的是Qt 5.2)
发布于 2014-06-08 22:12:47
一般情况下,考虑到您想要的功能不是直接可用的,请在the跟踪器上使用提交功能请求。
除此之外,AnyLanguage. 不能使用构建QLocale对象这是完全没有意义的-- QLocale对象完全标识特定的区域设置。它应该选哪一个去加拿大,fr_CA还是en_CA?
解决方案:使用
QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::Canada);然后接受列表中的第一个(如果存在),并像您正在做的那样提取国家名称。
https://stackoverflow.com/questions/24109270
复制相似问题