回答
你需要在运行时以某种方式找到它,或者你的源代码?如果是第二种情况,则可以使用this list。
是尝试这个例子
http://www.developer.nokia.com/Community/Wiki/How_to_get_list_of_Time_Zones_in_Qt_Maemo_application
注意这不是一个Qt的原生解决方案,所以它不能移植到所有平台。 – teukkam 2012-03-21 12:25:04
Moi,我知道:),但应该给“abhishek”正确的方法来接近 – Programmer 2012-03-21 12:28:18
ICU Library是便携式的,可用于Qt应用程序。 (它有一个C/C++ API。)在其他许多功能中,有一个TimeZone
类,它可以枚举系统已知的时区。
这可能是矫枉过正,如果你需要的是一个简单的列表,但如果你希望使用这些时区,并与其他元数据(区域设置等)进行交互,这将是很好的解决方案。
我不知道从哪里得到给定链接的库,有什么方法可以直接将这些库添加到我的symbain项目中? – abhishek 2012-03-28 08:24:03
下载页面是:http://site.icu-project.org/download。该页面包含二进制和源代码下载链接以及Subversion存储库的地址。我对Symbian环境没有经验,所以我恐怕不能提供任何细节; ICU库是一个正常的C/C++库 - 包含头文件,将链接库的路径添加到库中。您可能想为Symbian特定的帮助创建一个新问题。 – 2012-03-28 12:30:31
在qt5.2中描述的here中有另一个使用新QTimeZone类的例子。
他们创建了一个自定义Widget,它列出了所有已知的时区以及他们的特殊设置,如夏令时等。
基本代码贴有:
#include <QDebug>
#include <QByteArray>
#include <QDateTime>
#include <QList>
#include <QTimeZone>
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// Fill in combo box.
QList<QByteArray> ids = QTimeZone::availableTimeZoneIds();
foreach (QByteArray id, ids) {
ui->timeZoneComboBox->addItem(id);
}
// Connect combo box to slot to update fields.
connect(ui->timeZoneComboBox, SIGNAL(currentIndexChanged(int)),
SLOT(UpdateFields()));
// Update fields for initial value.
UpdateFields();
}
void Widget::UpdateFields() {
QByteArray id = ui->timeZoneComboBox->currentText().toLatin1();
QTimeZone zone = QTimeZone(id);
// Fill in fields for current time zone.
if (zone.isValid()) {
ui->descriptionLabel->setText(tr("<b>Description:</b> ") + id);
ui->countryLabel->setText(tr("<b>Country:</b> ") +
QLocale::countryToString(zone.country()));
ui->hasDaylightTimeCheckBox->setChecked(zone.hasDaylightTime());
ui->isDaylightTimeCheckBox->setChecked(
zone.isDaylightTime(QDateTime::currentDateTime()));
ui->hasTransitionsCheckBox->setChecked(zone.hasTransitions());
QDateTime zoneTime = QDateTime(
QDate::currentDate(), QTime::currentTime(), zone).toLocalTime();
ui->dateEdit->setDate(zoneTime.date());
ui->timeEdit->setTime(zoneTime.time());
QTimeZone::OffsetData offset = zone.nextTransition(
QDateTime::currentDateTime());
if (offset.atUtc != QDateTime()) {
ui->nextTransitionLabel->setEnabled(true);
ui->nextTransitionLabel->setText(
tr("<b>Next transition:</b> %1").arg(offset.atUtc.toString()));
} else {
ui->nextTransitionLabel->setEnabled(false);
ui->nextTransitionLabel->setText(
tr("<b>Next transition:</b> none"));
}
}
}
- 1. QT - 获取所有QPushButton的列表
- 2. 如何获得javascript中所有时区的列表
- 3. 如何获得Java 8中所有时区ID的列表
- 4. 获取所有时区
- 5. Windows Phone 8获取所有时区的列表
- 6. 如何获取所有卖家列表?
- 7. 如何从NodaTime的偏移量中获取所有IANA时区?
- 8. 如何获取Android中的所有列?
- 9. 如何获得Mathematica中列表的所有分区?
- 10. 获取列表中的所有成员
- 11. 如何获取列表中的所有最高整数Python中
- 12. 如何在pyside/pyqt/qt中获取QWidget的所有子组件?
- 13. 如何在Qt中从QListWidget获取所有项目的文本?
- 14. 获取Qt中的USB磁盘列表
- 15. 获取所有子序列的列表
- 16. 如何获取设备支持的所有时区?
- 17. 如何获取所有区域的时间格式
- 18. 获取所有可用时区
- 19. 获取网站集中的所有网站而没有获取所有列表?
- 20. 如何使用列表webservice获取所有列表项目
- 21. 如何获取文档中所有内容控件的列表?
- 22. 如何获取C#中所有加载类型的列表?
- 23. 如何获取Firebase android中所有孩子的列表?
- 24. 如何获取Drupal 6中所有内容类型的列表?
- 25. 如何使用C#获取Active Directory中所有域的列表
- 26. 如何获取绑定中所有变量的列表?
- 27. 如何获取计算机中所有打印机的列表
- 28. 如何获取列表中特定类型的所有对象?
- 29. 如何获取SharePoint中所有用户的列表
- 30. 如何获取Lucene中所有搜索关键字的列表?
我需要它为我的源代码,但如果用户选择时区,我的应用程序应该在该标准中显示时间。我怎样才能做到这一点 ? – abhishek 2012-03-22 12:38:46
要实现这一点,可能要么解决方案是可能的。在源代码中对时区进行硬编码可能是一种更简单的方法,但从系统中获取它们具有不需要维护的优点,假设极少数情况下时区发生变化,它们将反映在您正在使用的外部资源中。不过,看起来这应该是一件极其罕见的事情。 – teukkam 2012-03-22 12:46:55