QIviServiceManager 类
QIviServiceManager 提供了 QIviAbstractFeature 的后端。 更多...
头文件 | #include <QIviServiceManager> |
qmake | QT += 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) |
bool | hasInterface(const QString &interface) const |
bool | registerService(QObject *serviceBackendInterface, const QStringList &interfaces, QIviServiceManager::BackendType backendType = ProductionBackend) |
重实现的公共函数
virtual QVariant | data(const QModelIndex &index, int role) const override |
virtual QHash<int, QByteArray> | roleNames() const override |
virtual int | rowCount(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::ProductionBackend | 0 | 控制实际车载接口的后端,例如通过CAN总线连接的气候控制系统。 |
QIviServiceManager::SimulationBackend | 1 | 用于开发的累积后端,只返回模拟值且不会被用于最终硬件的部署。 |
枚举 QIviServiceManager::Roles
常量 | 值 | 描述 |
---|---|---|
QIviServiceManager::NameRole | Qt::DisplayRole | 后端名称,例如 MediaPlugin。 |
QIviServiceManager::ServiceObjectRole | Qt::UserRole | 实际的 QIviServiceObject,可用于将前端API与此后端连接。 |
注意:当在 data() 函数中使用此角色时,将加载和实例化后端插件。
常量 | 值 | 描述 |
---|---|---|
QIviServiceManager::InterfacesRole | Qt::UserRole + 1 | 实现的后端接口列表。 |
枚举 QIviServiceManager::SearchFlag
flags QIviServiceManager::SearchFlags
常量 | 值 | 描述 |
---|---|---|
QIviServiceManager::IncludeProductionBackends | 0x01 | 将生产后端包含在搜索结果中。 |
QIviServiceManager::IncludeSimulationBackends | 0x02 | 将模拟后端包含在搜索结果中。 |
QIviServiceManager::IncludeAll | IncludeProductionBackends | 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。
返回指定 index 和 role 的数据。
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是一个空的模型索引。
©版权所有 2020 Qt公司。本文档中的文档贡献为各自所有者的版权。本文档提供的文档受GNU自由文档许可证版本1.3的条款规定,该许可证由自由软件基金会发布。Qt和相应的标志是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。