QIfAbstractZonedFeature 类
QIfAbstractZonedFeature 是所有分区特征的基类。更多...
头文件 | #include <QIfAbstractZonedFeature> |
qmake | QT += interfaceframework |
由以下类实例化 | AbstractZonedFeature |
继承自 | QIfAbstractFeature |
继承自 |
属性
- availableZones : const QStringList
- zone : const QString
- zoneAt : const QVariantMap
- zones : const QVariantList
公共函数
QIfAbstractZonedFeature(const QString &interface, const QString &zone = QString(), QObject *parent = nullptr) | |
QStringList | availableZones() const |
QString | zone() const |
QIfAbstractZonedFeature * | zoneAt(const QString &zone) const |
QList<QIfAbstractZonedFeature *> | zones() const |
信号
void | availableZonesChanged(const QStringList &zones) |
void | zoneChanged() |
void | zonesChanged() |
保护函数
QIfZonedFeatureInterface * | backend(const QString &interface = QString()) const |
virtual QIfAbstractZonedFeature * | createZoneFeature(const QString &zone) = 0 |
重实现的保护函数
virtual bool | acceptServiceObject(QIfServiceObject *serviceObject) override |
virtual void | clearServiceObject() override |
virtual void | connectToServiceObject(QIfServiceObject *serviceObject) override |
详细描述
通过 subclass QIfAbstractZonedFeature 创建具有多个分区的 API。有关这些概念可用于用例的信息,请参阅 分区特征。
实现
派生类需要实现 createZoneFeature 函数,该函数负责实例化用于给定分区的类。在 simplest 的形式中,分配相同的类,将 zone 参数传递给其构造函数。
class QIfClimateControl : public QIfAbstractZonedFeature { ... explicit QIfClimateControl(const QString &zone = QString(), QObject *parent = nullptr) : QIfAbstractZonedFeature(QIfClimateControl_iid, zone, parent) { } protected: QIfAbstractZonedFeature *createZoneFeature(const QString &zone) override { new QIfClimateControl(zone, this); } }
对于派生类,后端连接调用按照《QIfAbstractFeature》和《详细连接顺序》指定的方式依次进行。这也适用于区域实例,它们使用传入的区域参数来识别属于此区域的后备接口中的信号。
有关如何实现后端以及如何处理特定于区域的属性,请参阅《QIfZonedFeatureInterface》。
区域特定实例
如上所述的简单形式,加上在后台处理特定于区域的属性,存在一些缺点。因为API既适用于前端API及其所有区域,使用该API的开发者无法识别哪些属性/函数是特定于区域的。
对于这个问题有两个解决方案,最好结合起来使用,以提供最灵活的API。
为每个区域功能实现一个isXAvailable函数
为每个区域功能添加一个额外属性,以指定功能是否可用。开发人员可以在UI中使用这样一个属性动态显示相关的UI元素,而不是根据区域名称硬编码它,或者依赖于《QIfZonedFeatureInterface》中描述的错误机制。
在createZoneFeature中实例化一个自定义类
通过在createZoneFeature中实例化一个自定义类,可以将区域特征和非区域特征的API拆分到两个类中。非区域功能在前端API中实现,所有区域特定函数都在返回的createZoneFeature()区域类中实现。
用法
一旦连接到后端,可以使用availableZones属性获取所有当前可用的区域。可以通过zoneAt()函数访问特定区域,或者使用zones函数,该函数返回区域列表。
属性文档
[只读]
availableZones : const QStringList
包含可用的区域列表。
访问函数
QStringList | availableZones() const |
通知信号
void | availableZonesChanged(const QStringList &zones) |
zone : const QString
此区域特征的区域名称。
区域可以在功能初始化时提供。使用此属性可以控制单个特定功能区域。
此属性仅在连接到后端之前可写。一旦发现后端且组件经过验证为有效,区域就不再可写。
建议在功能构造函数中初始化区域
QIfClimateControl *climateControl = new QIfClimateControl("FrontLeft", this); climateControl->startAutoDiscovery(); QString zone = climateControl->zone();
初始化后,建议不要更改区域。
访问函数
QString | zone() const |
通知信号
void | zoneChanged() |
[只读]
zoneAt : const QVariantMap
提供对给定区域的直接功能访问。
通知信号
void | zonesChanged() |
[只读]
zones : const QVariantList
提供对功能区域模型访问。
通知信号
void | zonesChanged() |
成员函数文档
[显式]
QIfAbstractZonedFeature::QIfAbstractZonedFeature(const QString &interface, const QString &zone = QString(), QObject *parent = nullptr)
构建具有特定接口和区域的分区功能。
如果父是QIfAbstractZonedFeature类型,则创建的实例使用父实例进行后端连接。父实例连接到后端,并将子功能与后端之间的更新进行转发。
[覆盖虚保护]
bool QIfAbstractZonedFeature::acceptServiceObject(QIfServiceObject *serviceObject)
重新实现:QIfAbstractFeature::acceptServiceObject(QIfServiceObject *serviceObject).
[保护]
QIfZonedFeatureInterface *QIfAbstractZonedFeature::backend(const QString &interface = QString()) const
返回后端接口的指针。
返回父后端,如果父是QIfAbstractZonedFeature类型。如果没有连接后端,则返回零。
[覆盖虚保护]
void QIfAbstractZonedFeature::clearServiceObject()
重新实现:QIfAbstractFeature::clearServiceObject().
[覆盖虚保护]
void QIfAbstractZonedFeature::connectToServiceObject(QIfServiceObject *serviceObject)
重新实现:QIfAbstractFeature::connectToServiceObject(QIfServiceObject *serviceObject).
[纯虚保护]
QIfAbstractZonedFeature *QIfAbstractZonedFeature::createZoneFeature(const QString &zone)
为给定的区域创建一个新的子功能。
如果使用指定的参数无法创建功能,则返回零。
QIfAbstractZonedFeature *QIfAbstractZonedFeature::zoneAt(const QString &zone) const
返回给定区域的功能实例。
QList<QIfAbstractZonedFeature *> QIfAbstractZonedFeature::zones() const
返回功能的全部区域实例。
© 2024 Qt公司有限公司。本文件中包含的文档贡献权归各自所有者所有。本提供的文档根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款提供。Qt及其相关标志是芬兰及/或全球其他国家的Qt公司有限公司的商标。所有其他商标均属于其各自所有者。