Exemple de cartes des widgets WebEngine
Démontre comment traiter les demandes de géolocalisation.

Maps montre comment traiter les demandes de géolocalisation provenant de QWebEnginePage.
L'API de géolocalisation est une API JavaScript que les applications web peuvent utiliser pour déterminer l'emplacement physique de l'utilisateur et l'afficher sur une carte, par exemple. Comme Qt WebEngine s'appuie sur le module Qt Positioning pour alimenter cette API, un backend de géolocalisation viable est nécessaire pour la plateforme cible.
Pour éviter d'envoyer accidentellement des informations de localisation à des tiers, les demandes de géolocalisation sont refusées par défaut. Cet exemple montre les étapes qu'une application doit suivre pour commencer à accepter ces demandes.
Remarque : sous Windows 11, activez les paramètres permettant à l'application d'accéder aux services de localisation de Windows. Dans l'application Paramètres, sous Privacy & Security > Location, activez Location services, Let apps access your location et Let desktop apps access your location.
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt Creator, ouvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.
Le code
Le programme d'exemple consiste en une seule classe, MainWindow, qui hérite de QMainWindow:
#include <QMainWindow> #include <QWebEngineView> class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); private: QWebEngineView *m_view; };
Dans le constructeur, nous définissons d'abord le QWebEngineView comme widget central :
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , m_view(new QWebEngineView(this)) { setCentralWidget(m_view);
Nous connectons ensuite une fonction lambda au signal QWebEnginePage::permissionRequested:
QWebEnginePage *page = m_view->page(); connect(page, &QWebEnginePage::permissionRequested, [this](QWebEnginePermission permission) {
Ce signal est émis chaque fois qu'une page web demande à utiliser une certaine fonctionnalité ou un certain dispositif, y compris non seulement les services de localisation, mais aussi les dispositifs de capture audio ou le verrouillage de la souris, par exemple. Dans cet exemple, nous ne traitons que les demandes de services de localisation :
if (permission.permissionType() != QWebEnginePermission::PermissionType::Geolocation) return;
Il s'agit maintenant de demander la permission à l'utilisateur :
QMessageBox msgBox(this); msgBox.setText(tr("%1 wants to know your location").arg(permission.origin().host())); msgBox.setInformativeText(tr("Do you want to send your current location to this website?")); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::Yes); if (msgBox.exec() == QMessageBox::Yes) permission.grant(); else permission.deny(); });
Notez que la question inclut le composant hôte de l'URI du site web (permission.origin()) pour informer l'utilisateur sur le site web qui recevra ses données de localisation.
Nous utilisons les méthodes QWebEnginePermission::grant() et QWebEnginePermission::deny() pour communiquer la réponse de l'utilisateur à la page web.
Enfin, nous demandons à QWebEnginePage de charger la page web susceptible d'utiliser les services de localisation :
page->load(QUrl(QStringLiteral("https://bing.com/maps"))); }
Voir aussi Qt WebEngine HTML5 Geolocation.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.