주어진 QLocale :: Country 값에 대한 국가 코드를 찾으려고합니다 . 매뉴얼에서는 QLocale :: name 과 비슷한 기능을하는이 함수 만 찾았습니다 .
QString QLocale :: name () const
이 로케일의 언어 및 국가를 "language_country"형식의 문자열로 반환합니다. 여기서 language는 소문자, 두 글자 ISO 639 언어 코드, country는 대문자, 두 글자 또는 세 글자 ISO 3166 국가 코드입니다.
반환 값의 두 번째 부분은 정확히 필요한 것이므로 다음 함수를 구성했습니다.
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를 사용하고 있습니다)
일반적으로 원하는 기능을 직접 사용할 수없는 경우 버그 추적기에 기능 요청 을 제출 하십시오 .
그 외에도 .NET Framework를 사용하여 QLocale 개체를 만들 수 없습니다AnyLanguage
. 이는 전혀 의미가 없습니다. QLocale 객체는 특정 로케일을 완전히 식별합니다 . 그것은 어느 하나를 캐나다 선택,한다 fr_CA
나 en_CA
?
해결책 : 사용
QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::Canada);
그런 다음 목록의 첫 번째 항목 (존재하는 경우)을 선택하고 수행하던대로 국가 이름을 추출합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다