QIviServiceManager 类

QIviServiceManager 提供了 QIviAbstractFeature 的后端。 更多...

头文件 #include <QIviServiceManager>
qmakeQT += ivicore
实例化 ServiceManager
继承自 QAbstractListModel

公共类型

枚举BackendType { ProductionBackend, SimulationBackend }
枚举Roles { NameRole, ServiceObjectRole, InterfacesRole }
枚举SearchFlag { IncludeProductionBackends, IncludeSimulationBackends, IncludeAll }
标志位集合SearchFlags

公共函数

QList<QIviServiceObject *>findServiceByInterface(const QString &interface, QIviServiceManager::SearchFlags searchFlags = IncludeAll)
boolhasInterface(const QString &interface) const
boolregisterService(QObject *serviceBackendInterface, const QStringList &interfaces, QIviServiceManager::BackendType backendType = ProductionBackend)

重实现的公共函数

virtual QVariantdata(const QModelIndex &index, int role) const override
virtual QHash<int, QByteArray>roleNames() const override
virtual introwCount(const QModelIndex &parent = QModelIndex()) const override

静态公共成员

QIviServiceManager *instance()

详细说明

QIviServiceManager 是 QtIvi 的核心,为您提供了一种简单的方式来检测哪些后端和接口可用。

默认情况下,QIviServiceManager 读取您插件路径中 ivi 文件夹中所有插件的元数据。当您使用 findServiceByInterface() 明确请求时,加载插件本身。

管理器可以通过文件名或元数据来区分 生产模拟 后端。

模拟后端可以在其插件元数据中将 simulation 键设置为 true 或在插件文件名中使用两种支持的插件后缀之一 (_simulation, _simulator)。

可以使用 registerService() 函数添加后端类,而无需将它们放入插件中。

服务管理器是一个进程范围内的单例,可以通过 instance 方法访问。

如果您需要有关哪些插件被识别的更详细信息,请确保您启用了 qt.ivi.servicemanagement 记录类别。

有关后端加载的更多信息,请参阅 动态后端系统

注意:QIviServiceManager 只接受与构建 qtivicore 所使用的构建配置相匹配的插件。这意味着qtivicore的“发布”构建不会接受“调试”构建的插件。

成员类型文档

枚举 QIviServiceManager::BackendType

常量描述
QIviServiceManager::ProductionBackend0控制实际车载接口的后端,例如通过CAN总线连接的气候控制系统。
QIviServiceManager::SimulationBackend1用于开发的累积后端,只返回模拟值且不会被用于最终硬件的部署。

枚举 QIviServiceManager::Roles

常量描述
QIviServiceManager::NameRoleQt::DisplayRole后端名称,例如 MediaPlugin。
QIviServiceManager::ServiceObjectRoleQt::UserRole实际的 QIviServiceObject,可用于将前端API与此后端连接。

注意:当在 data() 函数中使用此角色时,将加载和实例化后端插件。

常量描述
QIviServiceManager::InterfacesRoleQt::UserRole + 1实现的后端接口列表。

枚举 QIviServiceManager::SearchFlag
flags QIviServiceManager::SearchFlags

常量描述
QIviServiceManager::IncludeProductionBackends0x01将生产后端包含在搜索结果中。
QIviServiceManager::IncludeSimulationBackends0x02将模拟后端包含在搜索结果中。
QIviServiceManager::IncludeAllIncludeProductionBackends | IncludeSimulationBackends在搜索结果中都包含生产后端和模拟后端。

SearchFlags 类型是 QFlags<SearchFlag> 类型的别名,它存储了 SearchFlag 值的 OR 组合。

另请参阅生产后端模拟后端

成员函数文档

[override virtual] QVariant QIviServiceManager::data(const QModelIndex &index, int role) const

重新实现:QAbstractItemModel::data(const QModelIndex &index, int role) const。

返回指定 indexrole 的数据。

另请参阅QAbstractListModel::data

QList<QIviServiceObject *> QIviServiceManager::findServiceByInterface(const QString &interface, QIviServiceManager::SearchFlags searchFlags = IncludeAll)

返回实现指定 interface 的后端列表。

可以使用 searchFlags 参数来控制哪些类型的后端包含在搜索结果中。

注意:此函数可以通过元对象系统和从 QML 调用。请参阅 Q_INVOKABLE

bool QIviServiceManager::hasInterface(const QString &interface) const

如果指定的 interface 已注册,则返回 true

注意:此函数可以通过元对象系统和从 QML 调用。请参阅 Q_INVOKABLE

[static] QIviServiceManager *QIviServiceManager::instance()

返回全局服务管理器的实例。

bool QIviServiceManager::registerService(QObject *serviceBackendInterface, const QStringList &interfaces, QIviServiceManager::BackendType backendType = ProductionBackend)

注册后端。指定的serviceBackendInterface必须实现QIviServiceInterface接口,否则注册将失败。interfaces是一个至少包含一个由后端支持的接口的列表。backendType指示后端的类型并影响后端是否可以通过功能的自动发现选项找到。

如果成功注册后端则返回true;否则返回false

另请参阅QIviServiceInterface

[覆盖虚函数] QHash<int, QByteArray> QIviServiceManager::roleNames() const

重新实现:QAbstractItemModel::roleNames() const.

[覆盖虚函数] int QIviServiceManager::rowCount(const QModelIndex &parent = QModelIndex()) const

重新实现:QAbstractItemModel::rowCount(const QModelIndex &parent) const.

返回给定parent的行数。通常,parent是一个空的模型索引。

另请参阅QAbstractListModel::data

©版权所有 2020 Qt公司。本文档中的文档贡献为各自所有者的版权。本文档提供的文档受GNU自由文档许可证版本1.3的条款规定,该许可证由自由软件基金会发布。Qt和相应的标志是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。