如何获得Qt中的城市和国家列表?

时间:2014-07-23 11:43:08

标签: c++ qt qml

我正在为Ubuntu Touch开发一个时钟应用程序,我正在实现世界时钟功能,用户可以从列表中选择一个城市并查看当地时间。我正在使用QTimeZoneQDateTime通过提供timezoneID来获取某个城市的当地时间。但是,我无法找到可能为我提供世界上常见城市列表的Qt库函数。

注意:我总是可以通过在XML文件中提供数据来自己创建本地城市列表。这种方法的问题在于我需要翻译人员翻译那些巨大的城市列表。这就是为什么我正在寻找一个内置函数来照顾它。

有没有这样的Qt功能呢?

2 个答案:

答案 0 :(得分:1)

出于选择时区的目的,如果您只能列出每个时区的代表性主要城市(即80多个城市,而不是200多个城市),您可以参考Android项目下的设置应用程序。在以下目录中 -

https://android.googlesource.com/platform/packages/apps/Settings/+/android-2.3.2_r1/res

在每个xml-[language code]文件夹下,有一些名为timezones.xml的文件,列出了每个时区中主要代表性城市的相应语言,以及相应的时区ID。

(英文名称列在xml/timezones.xml下)

答案 1 :(得分:0)

Qt中没有这样的功能。但是,您可以通过某些地图提供程序使用API​​来解决此问题,例如 Google地图 OpenStreetMap 等。对于第二个我100%确定它有一个适用于C ++的API。您可以获得您所用语言的城市列表,并尝试使用该API。大多数(全部?)公共地图提供商提供国家和城市名称的翻译(注意:城市!=拥有300名居民的村庄),因此您只需更改区域设置即可。为了防止语言失误,我建议您在内部使用一些与语言无关的例程,例如GPS坐标或类似物。这一切都归结为地图提供商的数据库结构的方式,但我认为我们可以高度自信地说出名称标签,GPS坐标以及 - 谁知道 - 甚至可能存在时区。

PS: @HappyCoder,是的,在某个城市/城镇/村庄和国家/地区的命名方面存在巨大差异。即使在使用拉丁字母的国家,您也可以看到它:

  • 德国(英文)
  • Alemania(西班牙语)
  • 德国(德国)
  • L'Allemagne(法文)
  • Duitsland(南非荷兰语)
  • ...

同样适用于城市。如果你加入西里尔文,希腊文,中文,阿拉伯文等,情况会更糟。