QIfServiceManager 类
QIfServiceManager 为 QIfAbstractFeature 提供后端。 更多...
头文件 | #include <QIfServiceManager> |
qmake | QT += 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()) |
bool | hasInterface(const QString &interface) const |
bool | registerService(QObject *serviceBackendInterface, const QStringList &interfaces, QIfServiceManager::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 |
静态公共成员
QIfServiceManager * | instance() |
详细说明
QIfServiceManager 是 QtInterfaceFramework 的核心,并为您提供了检测哪些后端和接口可用的一种简单方式。
默认情况下,QIfServiceManager 会读取您插件路径下 interfaceframework 文件夹中所有插件的 metaData。当您使用 findServiceByInterface() 明确请求时,会加载插件本身。
Manager 可以通过文件名或 metaData 区分 Production 和 Simulation 后端。
仿真后端可以在其插件 metadata 中设置 simulation
键为 true
或在插件文件名中使用两种受支持的插件后缀之一 (_simulation, _simulator)。
可以使用 registerService() 函数添加 Backend 类,而无需将它们放入插件中。
服务管理器是一个进程范围内的单例,可以通过 instance 方法访问。
如果您需要有关识别插件的更详细的信息,请确保启用 qt.if.servicemanagement
日志类别。
有关后端加载的更多信息,请参阅动态后端系统。
注意:QIfServiceManager只接受与构建qtinterfaceframework所使用的构建配置相匹配的插件。这意味着qtinterfaceframework的"发布"构建不会接受从"调试"构建的插件。
成员类型文档
enum QIfServiceManager::BackendType
常量 | 值 | 描述 |
---|---|---|
QIfServiceManager::ProductionBackend | 0 | 控制实际汽车接口的后端,例如通过CAN总线连接的气候控制系统。 |
QIfServiceManager::SimulationBackend | 1 | 用于开发的开发后端,它只返回模拟值,不会部署到最终硬件。 |
enum QIfServiceManager::Roles
常量 | 值 | 描述 |
---|---|---|
QIfServiceManager::NameRole | Qt::DisplayRole | 后端的名称,例如MediaPlugin。 |
QIfServiceManager::ServiceObjectRole | Qt::UserRole | 实际的QIfServiceObject,可以用来将前端API连接到此后端。 |
注意:在data()函数中使用此角色时,后端插件将被加载和实例化。
常量 | 值 | 描述 |
---|---|---|
QIfServiceManager::InterfacesRole | Qt::UserRole +1 | 后端实现的接口列表。 |
enum QIfServiceManager::SearchFlag
flags QIfServiceManager::SearchFlags
常量 | 值 | 描述 |
---|---|---|
QIfServiceManager::IncludeProductionBackends | 0x01 | 包括生产后端在搜索结果中。 |
QIfServiceManager::IncludeSimulationBackends | 0x02 | 包括模拟后端在搜索结果中。 |
QIfServiceManager::IncludeAll | IncludeProductionBackends | IncludeSimulationBackends | 包括生产后端和模拟后端在搜索结果中。 |
SearchFlags类型是QFlags<SearchFlag>的typedef。它存储SearchFlag值的OR组合。
成员函数文档
[override virtual]
QVariant QIfServiceManager::data(const QModelIndex &index, int role) const
重新实现了:QAbstractItemModel::data(const QModelIndex &index, int role) const。
返回指定index和role的数据。
另请参阅: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公司及其它国家和地区的商标。所有其他商标均为其所有者的财产。