QPlaceManager 类
QPlaceManager 类提供接口,允许客户端访问特定后端存储的地点。 更多...
头文件 | #include <QPlaceManager> |
qmake | QT += location |
继承 | QObject |
公共函数
虚拟 | ~QPlaceManager() |
QPlaceCategory | category(const QString &categoryId) const |
QList<QPlaceCategory> | childCategories(const QString &parentId = QString()) const |
QStringList | childCategoryIds(const QString &parentId = QString()) const |
QPlace | compatiblePlace(const QPlace &original) const |
QPlaceContentReply * | getPlaceContent(const QPlaceContentRequest &request) const |
QPlaceDetailsReply * | getPlaceDetails(const QString &placeId) const |
QPlaceReply * | initializeCategories() |
QList<QLocale> | locales() const |
QString | managerName() const |
int | managerVersion() const |
QPlaceMatchReply * | matchingPlaces(const QPlaceMatchRequest &request) const |
QString | parentCategoryId(const QString &categoryId) const |
QPlaceIdReply * | removeCategory(const QString &categoryId) |
QPlaceIdReply * | removePlace(const QString &placeId) |
QPlaceIdReply * | saveCategory(const QPlaceCategory &category, const QString &parentId = QString()) |
QPlaceIdReply * | savePlace(const QPlace &place) |
QPlaceSearchReply * | search(const QPlaceSearchRequest &request) const |
QPlaceSearchSuggestionReply * | searchSuggestions(const QPlaceSearchRequest &request) const |
void | setLocale(const QLocale &locale) |
void | setLocales(const QList<QLocale> &locales) |
信号
void | categoryAdded(const QPlaceCategory &category, const QString &parentId) |
void | categoryRemoved(const QString &categoryId, const QString &parentId) |
void | categoryUpdated(const QPlaceCategory &category, const QString &parentId) |
void | dataChanged() |
void | errorOccurred(QPlaceReply *reply, QPlaceReply::Error error, const QString &errorString = QString()) |
void | 完成(QPlaceReply *reply) |
void | placeAdded(const QString &placeId) |
void | placeRemoved(const QString &placeId) |
void | placeUpdated(const QString &placeId) |
详细说明
以下表格概述了QPlaceManager提供的功能。
功能 | 描述 |
---|---|
搜索地点 | 使用搜索词和搜索区域等参数的集合,可以返回相关的地点给用户。 |
分类 | 地点可以被分类为属于不同的类别。管理者支持访问这些类别。 |
搜索词建议 | 给定一个部分完整的搜索词,可以提供一个潜在搜索词的列表。 |
推荐 | 给定一个现有的地点,可以给用户建议一组相似的推荐地点。 |
丰富内容 | 可以通过分页的方式检索丰富内容,如图片、评论等。 |
地点或分类管理 | 地点和分类可以保存和删除。当发生这些操作时,可能会发送通知。 |
本地化 | 可以指定不同的区域设置以返回不同语言的地点数据。 |
获取QPlaceManager实例
通过QGeoServiceProvider简化了QPlaceManager的创建。有关如何创建管理器的示例,请参阅初始化管理器。
异步接口
QPlaceManager类提供了对包含地点信息的数据仓库的抽象。QPlaceManager提供的函数主要是异步的,并遵循请求-回复模型。通常给管理者提供一个请求,该请求包含一系列参数和一个回复对象被创建。回复对象有一个信号在请求完成时通知,一旦完成,回复包含请求的结果,以及可能发生的任何错误。
异步请求通常按照以下方式处理
//1) Make an appropriate request QPlaceSearchRequest searchRequest; searchRequest.setSearchTerm("ice cream"); searchRequest.setSearchArea(QGeoCircle(QGeoCoordinate(12.34, 56.78))); //2) Use the manager to initiate a request and retrieve a reply object QPlaceSearchReply * searchReply = manager->search(searchRequest); //3) Connect the reply object to a slot which is invoked upon operation completion connect(searchReply, &QPlaceSearchReply::finished, this, &RequestHandler::processSearchReply); ... ... //4) Have the slot appropriately process the results of the operation void processSearchReply() { if (searchReply->error() == QPlaceReply::NoError) { for (const QPlaceSearchResult &result : searchReply->results()) { if (result.type() == QPlaceSearchResult::PlaceResult) qDebug() << "Title:" << result.title(); } } //5) Discard the rely object when done. searchReply->deleteLater(); searchReply = nullptr; }
请参阅常见操作以获取示例,演示了如何使用QPlaceManger。
分类初始化
在应用程序启动过程中某个时候,应该调用initializeCategories()函数来设置分类。初始化分类可以使用以下函数
- QPlaceManager::childCategories()
- QPlaceManager::category()
- QPlaceManager::parentCategoryId()
- QPlaceManager::childCategoryIds();
如果需要刷新或重新加载分类,可以再次调用initializeCategories()函数。
成员函数文档
[虚拟 noexcept]
QPlaceManager::~QPlaceManager()
销毁管理器。此析构函数由QGeoServiceProvider内部使用,并且不应在应用程序代码中调用。
QPlaceCategory QPlaceManager::category(const QString &categoryId) const
返回给定categoryId对应的分类。
[信号]
void QPlaceManager::categoryAdded(const QPlaceCategory &category, const QString &parentId)
如果将一个类别添加到管理器的数据存储中,则会发出此信号。通过parentId指定该类别的父项。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
[信号]
void QPlaceManager::categoryRemoved(const QString &categoryId, const QString &parentId)
当对应的categoryId的类别已从管理器的数据存储中删除时,会发出此信号。删除的类别的父项由parentId指定。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
[信号]
void QPlaceManager::categoryUpdated(const QPlaceCategory &category, const QString &parentId)
如果管理器数据存储中的类别被修改,则会发出此信号。修改的类别的父项由parentId指定。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
QList<QPlaceCategory> QPlaceManager::childCategories(const QString &parentId = QString()) const
返回与对应于parentId的类别相对应的子类别的列表。如果parentId为空,则返回所有顶级类别。
QStringList QPlaceManager::childCategoryIds(const QString &parentId = QString()) const
返回与对应于parentId的类别相对应的子类别标识符。如果parentId为空,则返回所有顶级类别标识符。
QPlace QPlaceManager::compatiblePlace(const QPlace &original) const
返回一个剪切或修改后的original地点的版本,该版本适合保存到管理器中。
修改后的版本中只包含此管理器支持的位置详细信息。不复制父数据,例如地点ID。
[信号]
void QPlaceManager::dataChanged()
如果管理器其基础数据存储有大规模更改,并且管理器认为这些更改足够剧烈,需要客户端重新加载数据,则管理器会发出此信号。
如果发出信号,则不会为关联的更改发出其他信号。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
[信号]
void QPlaceManager::errorOccurred(QPlaceReply *reply, QPlaceReply::Error error, const QString &errorString = QString())
当处理回复时检测到错误时,会发出此信号。可能会随后发出QPlaceManager::finished()信号。
错误将由错误代码错误描述。如果错误字符串不为空,它将包含错误文本描述,供开发人员使用,而不是最终用户。
此信号和QPlaceReply::errorOccurred()将同时发出。
注意:不要删除与此信号连接的槽中的回复对象。请使用deleteLater()代替。
[信号]
void QPlaceManager::finished(QPlaceReply *reply)
当回复完成处理时,会发出此信号。
如果reply->error()等于QPlaceReply::NoError,那么处理成功完成。
此信号和QPlaceReply::finished()将同时发出。
注意:不要删除与此信号连接的槽中的回复对象。请使用deleteLater()代替。
QPlaceContentReply *QPlaceManager::getPlaceContent(const QPlaceContentRequest &request) const
根据request中指定的参数检索地点的内容。
有关使用示例,请参阅获取丰富内容。
QPlaceDetailsReply *QPlaceManager::getPlaceDetails(const QString &placeId) const
根据给定的placeId检索地点的详细信息。
有关使用示例,请参阅获取地点详情。
QPlaceReply *QPlaceManager::initializeCategories()
初始化管理器的类别。
有关使用示例,请参阅使用类别。
QList<QLocale> QPlaceManager::locales() const
返回首选区域列表。这些区域用作提示,指明应返回哪一种语言的地方和类别细节。
如果无法满足第一个指定期域,则会回退到下一个,依此类推。某些管理器后端可能不支持严格定义的一组区域。一个任意示例是,法国的一些地方可能会有法语和英语本地化,而美国的某些地区可能只有英语本地化可用。在此例中,支持的区域集取决于搜索位置。
如果管理器无法满足任何首选的区域,则回退到使用特定后端的支持语言。
区域支持可能因服务提供商而异。对于那些支持它的供应商,默认情况下,全局默认区域被设置为管理器的唯一区域。
对于不支持区域的管理器,区域列表始终为空。
另请参阅:setLocales()。
QString QPlaceManager::managerName() const
返回管理员的名称
int QPlaceManager::managerVersion() const
返回管理器版本。
QPlaceMatchReply *QPlaceManager::matchingPlaces(const QPlaceMatchRequest &request) const
返回一个回复,其中包含与请求中指定的对应/匹配的地点列表。请求中指定的地点来自不同的管理器。
QString QPlaceManager::parentCategoryId(const QString &categoryId) const
返回与categoryId对应的分类的父分类标识符。
[信号]
void QPlaceManager::placeAdded(const QString &placeId)
如果已将地点添加到管理器引擎的数据存储中,则发出此信号。通过 placeId 指定特定的添加地点。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
[信号]
void QPlaceManager::placeRemoved(const QString &placeId)
如果已从管理器数据存储中删除地点,则发出此信号。通过 placeId 指定被删除的特定地点。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
[信号]
void QPlaceManager::placeUpdated(const QString &placeId)
如果已修改管理器数据存储中的地点,则发出此信号。通过 placeId 指定被修改的特定地点。
只有支持QPlaceManager::NotificationsFeature的经理会发出此信号。
另请参阅数据已更改。
QPlaceIdReply *QPlaceManager::removeCategory(const QString &categoryId)
从管理器中删除与categoryId对应的分类。
有关用法示例,请参阅删除分类。
QPlaceIdReply *QPlaceManager::removePlace(const QString &placeId)
从管理器中删除与placeId对应的地点。
有关用法示例,请参阅删除地点 cpp。
QPlaceIdReply *QPlaceManager::saveCategory(const QPlaceCategory &category, const QString &parentId = QString())
保存是parentId指定的分类的子分类的category。空parentId表示将category作为顶级分类保存。
有关用法示例,请参阅保存分类。
QPlaceIdReply *QPlaceManager::savePlace(const QPlace &place)
保存指定的place。
有关用法示例,请参阅保存地点 cpp。
QPlaceSearchReply *QPlaceManager::search(const QPlaceSearchRequest &request) const
根据在request中指定的参数搜索地点。
有关使用示例,请参阅发现/搜索。
QPlaceSearchSuggestionReply *QPlaceManager::searchSuggestions(const QPlaceSearchRequest &request) const
根据在request中指定的参数请求一系列搜索词建议。此request可以包含不完整的搜索词,以及其他搜索区域等数据,以缩小相关结果。
有关使用示例,请参阅搜索建议。
void QPlaceManager::setLocale(const QLocale &locale)
方便函数,将管理器的首选区域列表设置为一个单独的locale。
void QPlaceManager::setLocales(const QList<QLocale> &locales)
设置首选locales列表。
另请参阅 locales。
© 2024 Qt有限公司。此文档中包含的贡献的文档版权属于其各自的所有者。提供的文档是根据自由软件基金会根据GNU自由文档许可证版本1.3的条款许可的。Qt和相关的徽标是芬兰的和/或在其他全球国家的The Qt Company Ltd.的商标。所有其他商标归其各自的所有者所有。