QIfZonedFeatureInterface 类
QIfZonedFeatureInterface 定义了所有由 QIfAbstractZonedFeature 衍生的类的基接口。 更多信息...
头文件 | #include <QIfZonedFeatureInterface> |
qmake | QT += interfaceframework |
继承 | QIfFeatureInterface |
继承者 | QIfClimateControlBackendInterface 和 QIfWindowControlBackendInterface |
公共函数
QIfZonedFeatureInterface(QObject *parent = nullptr) | |
virtual QStringList | availableZones() const = 0 |
信号
void | availableZonesChanged(const QStringList &zones) |
详细描述
实现 QIfZonedFeatureInterface 与 QIfFeatureInterface 中的描述相同模式,但为了支持区域,需要实现一些额外的函数:所有区域化的设置器和信号都需要像下面描述的那样进行适配。
提供可用区域
在调用后端之前,区域化特性将查询可用区域的列表。区域是字符串键,可以由后端开发者自行定义。在这种情况下,我们有两个区域:“左侧”和“右侧”
QStringList Backend::availableZones() const { QStringList zones; zones << "Left"; zones << "Right"; return zones; }
信号定义
区域化信号或区域化属性的更改信号需要将区域作为第二个参数提供。以下是一个区域化信号的示例
void fanSpeedLevelChanged(int value, const QString &zone);
与实现 QIfFeatureInterface 类似,后端需要在 initialize() 函数中发出所有属性更改信号,并带有初始值。在区域化后端中,实现必须发出所有支持的属性信号,传递区域作为参数。如果属性没有区域化,则可以省略区域参数。
void Backend::initialize() { emit fanSpeedLevelChanged(2, "Left"); emit fanSpeedLevelChanged(2, "Right"); emit steeringWheelHeaterChanged(0); // Generic, no zone specified emit initializationDone(); }
设置器实现
区域化属性的设置器在属性值之后将区域作为第二个参数。验证请求的区域是后端实现的责任,如果传递了不受支持的区域,应报告 QIfAbstractFeature::InvalidZone 错误。
在示例中,fanSpeedLevel 属性是区域化的。如果 zone 有效,则实际的风扇速度级别将进行调整,然后发出更改信号以指示对特性的更改。
void Backend::setFanSpeedLevel(int value, const QString &zone) { if (!m_fanSpeedZones.contains(zone)) { emit errorChanged(QIfAbstractFeature::InvalidZone); } else { // Set specified zone fan to value ... emit fanSpeedLevelChanged(value, zone); } }
另请参阅 QIfAbstractZonedFeature.
成员函数说明
[显式]
QIfZonedFeatureInterface::QIfZonedFeatureInterface(QObject *parent = nullptr)
构造后端基础接口。
parent 被发送到 QObject 构造函数。
[纯虚函数]
QStringList QIfZonedFeatureInterface::availableZones() const
返回一组支持的区域名称。客户端连接后调用该函数。
返回的名称必须是有效的 QML 属性名称,即 [a-z_][A-Za-z0-9_]*
。
另请参阅 availableZonesChanged() 和 提供可用区域。
[信号]
void QIfZonedFeatureInterface::availableZonesChanged(const QStringList &zones)
当可用区域发生更改时发出。
当在创建后端实例时需要先检索可用 区域列表 时,请使用此信号。
另请参阅 availableZones() 和 提供可用区域。
© 2024 Qt 公司有限公司。此处包含的文档贡献权属于各自的拥有者。提供的文档受GNU 自由文档许可协议版本 1.3 的条款约束,由自由软件基金会发布。Qt 和相应标志是芬兰及/或世界其他地区的 Qt 公司的商标。所有其他商标均为各自所有者的财产。