QIfServiceManager 类

QIfServiceManager 为 QIfAbstractFeature 提供后端。 更多...

头文件 #include <QIfServiceManager>
qmakeQT += interfaceframework
由以下实例化 ServiceManager
继承自 QAbstractListModel

公共类型

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

公共函数

QList<QIfServiceObject *>findServiceByInterface(const QString &interface, QIfServiceManager::SearchFlags searchFlags = IncludeAll, const QStringList &preferredBackends = QStringList())
boolhasInterface(const QString &interface) const
boolregisterService(QObject *serviceBackendInterface, const QStringList &interfaces, QIfServiceManager::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

静态公共成员

QIfServiceManager *instance()

详细说明

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

默认情况下,QIfServiceManager 会读取您插件路径下 interfaceframework 文件夹中所有插件的 metaData。当您使用 findServiceByInterface() 明确请求时,会加载插件本身。

Manager 可以通过文件名或 metaData 区分 ProductionSimulation 后端。

仿真后端可以在其插件 metadata 中设置 simulation 键为 true 或在插件文件名中使用两种受支持的插件后缀之一 (_simulation, _simulator)。

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

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

如果您需要有关识别插件的更详细的信息,请确保启用 qt.if.servicemanagement 日志类别。

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

注意:QIfServiceManager只接受与构建qtinterfaceframework所使用的构建配置相匹配的插件。这意味着qtinterfaceframework的"发布"构建不会接受从"调试"构建的插件。

成员类型文档

enum QIfServiceManager::BackendType

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

enum QIfServiceManager::Roles

常量描述
QIfServiceManager::NameRoleQt::DisplayRole后端的名称,例如MediaPlugin。
QIfServiceManager::ServiceObjectRoleQt::UserRole实际的QIfServiceObject,可以用来将前端API连接到此后端。

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

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

enum QIfServiceManager::SearchFlag
flags QIfServiceManager::SearchFlags

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

SearchFlags类型是QFlags<SearchFlag>的typedef。它存储SearchFlag值的OR组合。

另请参阅:ProductionBackendSimulationBackend

成员函数文档

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

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

返回指定indexrole的数据。

另请参阅:QAbstractListModel::data()。

[invokable] QList<QIfServiceObject *> QIfServiceManager::findServiceByInterface(const QString &interface, QIfServiceManager::SearchFlags searchFlags = IncludeAll, const QStringList &preferredBackends = QStringList())

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

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

使用preferredBackends参数在多个后端实现指定接口时选择后端。通配符按顺序应用于找到的后端。如果通配符与某些后端匹配,则加载这些后端;否则,将使用下一个通配符。

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

[可调用] bool QIfServiceManager::hasInterface(const QString &interface) const

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

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

[静态] QIfServiceManager *QIfServiceManager::instance()

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

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

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

serviceBackendInterface 的所有权传递给 QIfServiceManager

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

另请参阅 QIfServiceInterface

[重写虚函数] QHash<int, QByteArray> QIfServiceManager::roleNames() const

重写: QAbstractItemModel::roleNames() const.

[重写虚函数] int QIfServiceManager::rowCount(const QModelIndex &parent = QModelIndex()) const

重写: QAbstractItemModel::rowCount(const QModelIndex &parent) const.

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

另请参阅:QAbstractListModel::data()。

© 2024 Qt公司有限公司。本文件中的文档贡献归相应的所有者所有。提供的文档遵循由自由软件基金会发布的 GNU自由文档许可协议版本1.3 的条款。Qt及其相关标志是芬兰的Qt公司及其它国家和地区的商标。所有其他商标均为其所有者的财产。