QNetworkInformation Class
QNetworkInformation expose diverses informations sur le réseau par l'intermédiaire de backends natifs. Plus d'informations...
| En-tête : | #include <QNetworkInformation> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Depuis : | Qt 6.1 |
| Hérite : | QObject |
Types publics
| enum class | Feature { Reachability, CaptivePortal, TransportMedium, Metered } |
| flags | Features |
| enum class | Reachability { Unknown, Disconnected, Local, Site, Online } |
(since 6.3) enum class | TransportMedium { Unknown, Ethernet, Cellular, WiFi, Bluetooth } |
Propriétés
(since 6.2)isBehindCaptivePortal : bool(since 6.3)isMetered : bool- reachability : Reachability
(since 6.3)transportMedium : TransportMedium
Fonctions publiques
| QString | backendName() const |
| bool | isBehindCaptivePortal() const |
| bool | isMetered() const |
| QNetworkInformation::Reachability | reachability() const |
(since 6.3) QNetworkInformation::Features | supportedFeatures() const |
| bool | supports(QNetworkInformation::Features features) const |
| QNetworkInformation::TransportMedium | transportMedium() const |
Signaux
| void | isBehindCaptivePortalChanged(bool state) |
| void | isMeteredChanged(bool isMetered) |
| void | reachabilityChanged(QNetworkInformation::Reachability newReachability) |
| void | transportMediumChanged(QNetworkInformation::TransportMedium current) |
Membres publics statiques
| QStringList | availableBackends() |
| QNetworkInformation * | instance() |
(since 6.4) bool | loadBackendByFeatures(QNetworkInformation::Features features) |
(since 6.4) bool | loadBackendByName(QStringView backend) |
(since 6.3) bool | loadDefaultBackend() |
Description détaillée
QNetworkInformation fournit une interface multiplateforme pour les informations relatives au réseau par l'intermédiaire de plugins.
Les plugins peuvent prendre en charge différentes fonctionnalités, et vous pouvez donc charger des plugins en fonction des fonctionnalités dont vous avez besoin.
Dans la plupart des cas, l'approche recommandée consiste à charger le backend spécifique à la plate-forme en appelant loadDefaultBackend(). Cela permet de sélectionner automatiquement le backend le plus approprié disponible sur la plateforme actuelle et convient à la majorité des applications.
#include <QCoreApplication>#include <QNetworkInformation>#include <QDebug>void onReachabilityChanged(QNetworkInformation::Reachability reachability) { switch (reachability) { case QNetworkInformation::Reachability::Unknown : qDebug() << "Network reachability is unknown."; break; case QNetworkInformation::Reachability::Disconnected : qDebug() << "Network is disconnected."; break; case QNetworkInformation::Reachability::Local : qDebug() << "Network is locally reachable."; break; case QNetworkInformation::Accessibilité::Site : qDebug() << "Network can reach the site."; break; case QNetworkInformation::Atteignabilité::En ligne : qDebug() << "Network is online."; break; } }int main(int argc, char *argv[]) { QCoreApplication a(argc, argv) ; // Vérifie si QNetworkInformation est pris en charge si (!QNetworkInformation::loadDefaultBackend()) { qWarning() << "QNetworkInformation is not supported on this platform or backend."; return 1; } QNetworkInformation* netInfo = QNetworkInformation::instance() ; // Connexion au signal reachabilityChanged QObject::connect(netInfo, &QNetworkInformation::reachabilityChanged, &onReachabilityChanged) ; // Affiche l'état initialonReachabilityChanged(netInfo>reachability()) ; return a.exec() ; }
Pour des cas d'utilisation plus avancés, les développeurs peuvent préférer charger un backend en fonction de capacités ou de préférences spécifiques. loadBackendByFeatures() permet de sélectionner un backend qui prend en charge un ensemble spécifique de fonctionnalités, telles que l'indication du médium de transport ou de l'intensité du signal. Par ailleurs, loadBackendByName() permet de charger un plugin par son nom, ce qui peut inclure des implémentations de backend spécifiques à une plateforme ou personnalisées.
QNetworkInformation est un singleton et reste en vie depuis le premier chargement réussi jusqu'à la destruction de l'objet QCoreApplication. Si vous détruisez et recréez l'objet QCoreApplication, vous devez le charger à nouveau pour réinitialiser le plugin.
Remarque : étant donné que la classe est un singleton et qu'elle repose également sur QCoreApplication, QNetworkInformation doit toujours être chargé en premier lieu dans le même thread que l'objet QCoreApplication. En effet, l'objet sera également détruit dans ce fil d'exécution, et divers composants spécifiques au backend peuvent nécessiter d'être détruits dans le même fil d'exécution que celui où ils sont créés.
Un cas d'utilisation possible de QNetworkInformation est la surveillance de l'état de la connectivité du réseau. reachability() indique si le système est considéré comme étant en ligne, sur la base des informations communiquées par le système d'exploitation ou le plugin sous-jacent. Toutefois, ces informations ne sont pas toujours exactes. Par exemple, sous Windows, la vérification en ligne peut reposer sur la connectivité à un serveur appartenant à Microsoft ; si ce serveur est inaccessible (par exemple, en raison de règles de pare-feu), le système peut indiquer à tort qu'il est hors ligne. Ainsi, reachability() ne doit pas être utilisé comme un contrôle préalable définitif avant de tenter une connexion réseau, mais plutôt comme un signal général de l'état de la connectivité.
Pour utiliser efficacement reachability(), l'application doit également comprendre le type de destination qu'elle tente d'atteindre. Par exemple, si la cible est une adresse IP locale, Reachability::Local ou Reachability::Site peut suffire. Si la destination se trouve sur l'internet public, il faut alors utiliser Reachability::Online. Sans ce contexte, l'interprétation de l'accessibilité signalée peut conduire à des hypothèses erronées sur l'accès réel au réseau.
Attention : Seuls Linux et Windows prennent en charge les options plus fines Reachability::Site et Reachability::Local. Sur les plateformes Android et Apple, reachability() se limite à signaler uniquement Online, Offline ou Unknown. Par conséquent, toute logique reposant sur la détection de la connectivité au niveau local ou au niveau du site doit inclure des vérifications ou des solutions de repli appropriées pour la plateforme.
// Aide simple pour déterminer si une adresse IP est "locale"bool isLocalAddress(const QHostAddress &address) { return address.isInSubnet(QHostAddress("192.168.0.0"), 16) ||address.isInSubnet(QHostAddress("10.0.0.0"), 8) |address.isInSubnet(QHostAddress("172.16.0.0"), 12) |address.isLoopback() ; }int main(int argc, char *argv[]) { ... // Adresse IP cible (par défaut : Google DNS) QString targetIpStr = argc > 1 ? argv[1]: "8.8.8.8"; QHostAddress targetIp(targetIpStr) ; if (targetIp.isNull()) { qWarning() << "Invalid IP address:" << targetIpStr; return 1; } // Décider du niveau de joignabilité nécessaire pour la cible QNetworkInformation::Reachability requiredReachability =isLocalAddress(targetIp) ? QNetworkInformation::Reachability::Local : QNetworkInformation::Reachability::Online ; // Récupérer la joignabilité actuelle rapportée par le système QNetworkInformation::Reachability currentReachability = networkInfo->reachability() ; qDebug() << "Target IP:" << targetIp.toString(); qDebug() << "Target is considered" << (isLocalAddress(targetIp)) ? "local/site.": "external/online.") ; qDebug() << "Required reachability level:" << requiredReachability; qDebug() << "Current reachability:" << currentReachability; if (currentReachability < requiredReachability) { qWarning() << "Current network state may not allow reaching the target address."; } else { qDebug() << "Target may be reachable based on current network state."; } ...
Voir aussi QNetworkInformation::Feature.
Documentation sur les types de membres
enum class QNetworkInformation::Feature
flags QNetworkInformation::Features
Liste toutes les fonctionnalités qu'un plugin peut actuellement prendre en charge. Ceci peut être utilisé dans QNetworkInformation::loadBackendByFeatures().
| Constante | Valeur | Description |
|---|---|---|
QNetworkInformation::Feature::Reachability | 0x1 | Si le plugin prend en charge cette fonctionnalité, la propriété reachability fournira des résultats utiles. Dans le cas contraire, elle renverra toujours Reachability::Unknown. Voir également QNetworkInformation::Reachability. |
QNetworkInformation::Feature::CaptivePortal | 0x2 | Si le plugin prend en charge cette fonctionnalité, la propriété isBehindCaptivePortal fournira des résultats utiles. Sinon, elle renverra toujours false. |
QNetworkInformation::Feature::TransportMedium | 0x4 | Si le plugin prend en charge cette fonctionnalité, la propriété transportMedium fournira des résultats utiles. Sinon, elle renverra toujours TransportMedium::Unknown. Voir aussi QNetworkInformation::TransportMedium. |
QNetworkInformation::Feature::Metered | 0x8 | Si le plugin prend en charge cette fonctionnalité, la propriété isMetered fournira des résultats utiles. Sinon, elle renverra toujours false. |
Le type Features est un typedef pour QFlags<Feature>. Il stocke une combinaison OU de valeurs de caractéristiques.
enum class QNetworkInformation::Reachability
| Constante | Valeur | Description |
|---|---|---|
QNetworkInformation::Reachability::Unknown | 0 | Si cette valeur est renvoyée, il se peut que nous soyons connectés mais que le système d'exploitation n'ait pas encore confirmé la connectivité totale, ou que cette fonction ne soit pas prise en charge. |
QNetworkInformation::Reachability::Disconnected | 1 | Indique que le système peut ne pas avoir de connectivité du tout. |
QNetworkInformation::Reachability::Local | 2 | Indique que le système est connecté à un réseau, mais qu'il ne peut accéder qu'aux appareils du réseau local. |
QNetworkInformation::Reachability::Site | 3 | Indique que le système est connecté à un réseau, mais qu'il ne peut accéder qu'aux périphériques du sous-réseau local ou d'un intranet. |
QNetworkInformation::Reachability::Online | 4 | Indique que le système est connecté à un réseau et qu'il peut accéder à l'internet. |
Voir aussi QNetworkInformation::reachability.
[since 6.3] enum class QNetworkInformation::TransportMedium
Liste des supports actuellement reconnus permettant de se connecter à l'internet.
| Constante | Valeur | Description |
|---|---|---|
QNetworkInformation::TransportMedium::Unknown | 0 | Renvoyée si le système d'exploitation ne signale aucun support actif, si le support actif n'est pas reconnu par Qt ou si la fonction TransportMedium n'est pas prise en charge. |
QNetworkInformation::TransportMedium::Ethernet | 1 | Indique que la connexion actuellement active utilise Ethernet. Remarque : cette valeur peut également être renvoyée lorsque Windows est connecté à un réseau personnel Bluetooth. |
QNetworkInformation::TransportMedium::Cellular | 2 | Indique que la connexion active utilise un réseau cellulaire. |
QNetworkInformation::TransportMedium::WiFi | 3 | Indique que la connexion active utilise un réseau Wi-Fi. |
QNetworkInformation::TransportMedium::Bluetooth | 4 | Indique que la connexion actuellement active est connectée à l'aide de Bluetooth. |
Cette énumération a été introduite dans Qt 6.3.
Voir également QNetworkInformation::transportMedium.
Documentation sur les propriétés
[read-only, since 6.2] isBehindCaptivePortal : bool
Permet de savoir si l'appareil de l'utilisateur se trouve derrière un portail captif.
Cette propriété indique si l'appareil de l'utilisateur est actuellement connu pour être derrière un portail captif. Cette fonctionnalité repose sur la détection des portails captifs par le système d'exploitation et n'est pas prise en charge sur les systèmes qui ne le signalent pas. Sur les systèmes où elle n'est pas prise en charge, cette propriété renverra toujours false.
Cette propriété a été introduite dans Qt 6.2.
Fonctions d'accès :
| bool | isBehindCaptivePortal() const |
Notifier signal :
| void | isBehindCaptivePortalChanged(bool state) |
[read-only, since 6.3] isMetered : bool
Vérifier si la connexion actuelle est mesurée
Cette propriété indique si la connexion en cours est (connue pour être) payante ou non. Vous pouvez l'utiliser comme facteur d'orientation pour décider si votre application doit effectuer certaines requêtes réseau ou certains téléchargements. Par exemple, il se peut que vous ne souhaitiez pas télécharger des journaux ou des diagnostics lorsque cette propriété est true.
void uploadLogFile() { ... }int main(int argc, char *argv[]) { QCoreApplication app(argc, argv) ; ... if (netInfo->isMetered()) { qWarning() << "Log upload skipped: Current network is metered."; app.quit() ; } else { uploadLogFile() ; } ... }
Cette propriété a été introduite dans Qt 6.3.
Fonctions d'accès :
| bool | isMetered() const |
Signal Notifier :
| void | isMeteredChanged(bool isMetered) |
[read-only] reachability : Reachability
Cette propriété indique l'état actuel de la connectivité réseau du système.
Elle indique le niveau de connectivité auquel on peut s'attendre. Notez que cette propriété est uniquement basée sur ce que le plugin/système d'exploitation rapporte. Dans certains cas, ces informations sont erronées. Par exemple, sous Windows, la vérification "en ligne" est effectuée par défaut par Windows qui se connecte à un serveur appartenant à Microsoft. Si ce serveur est bloqué pour une raison quelconque, il supposera qu'il n'est pas accessible en ligne. Pour cette raison, vous ne devez pas utiliser cette vérification avant de tenter d'établir une connexion.
Fonctions d'accès :
| QNetworkInformation::Reachability | reachability() const |
Signal de notification :
| void | reachabilityChanged(QNetworkInformation::Reachability newReachability) |
[read-only, since 6.3] transportMedium : TransportMedium
Cette propriété contient le moyen de transport actuellement actif pour l'application
Cette propriété renvoie le support de transport actuellement actif pour l'application, sur les systèmes d'exploitation où cette information est disponible.
Lorsque le support de transport actuel change, un signal est émis, ce qui peut se produire, par exemple, lorsqu'un utilisateur quitte la portée d'un réseau WiFi, débranche son câble Ethernet ou active le mode Avion.
Cette propriété a été introduite dans Qt 6.3.
Fonctions d'accès :
| QNetworkInformation::TransportMedium | transportMedium() const |
Notifier signal :
| void | transportMediumChanged(QNetworkInformation::TransportMedium current) |
Member Function Documentation
[static] QStringList QNetworkInformation::availableBackends()
Renvoie une liste des noms de tous les backends actuellement disponibles.
QString QNetworkInformation::backendName() const
Renvoie le nom du backend actuellement chargé.
[static] QNetworkInformation *QNetworkInformation::instance()
Renvoie un pointeur sur l'instance de QNetworkInformation, s'il y en a une. Si cette méthode est appelée avant qu'un backend ne soit chargé, elle renvoie un pointeur nul.
Voir aussi loadBackendByName(), loadDefaultBackend() et loadBackendByFeatures().
[static, since 6.4] bool QNetworkInformation::loadBackendByFeatures(QNetworkInformation::Features features)
Charge un backend qui supporte features.
Renvoie true s'il a réussi à charger le backend demandé ou s'il était déjà chargé. Retourne false dans le cas contraire.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi instance.
[static, since 6.4] bool QNetworkInformation::loadBackendByName(QStringView backend)
Tente de charger un backend dont le nom correspond à backend (sans tenir compte de la casse).
Retourne true s'il a réussi à charger le backend demandé ou s'il était déjà chargé. Retourne false dans le cas contraire.
Cette fonction a été introduite dans Qt 6.4.
Voir aussi instance.
[static, since 6.3] bool QNetworkInformation::loadDefaultBackend()
Tente de charger le backend par défaut de la plate-forme.
Remarque : à partir de la version 6.7, cette fonction tente de charger n'importe quel backend prenant en charge Reachability si le backend par défaut de la plateforme n'est pas disponible ou ne parvient pas à se charger. En cas d'échec, il se rabattra sur un backend qui ne renvoie que les valeurs par défaut pour toutes les propriétés.
La correspondance entre la plate-forme et le plugin est la suivante :
| Plate-forme | Nom du plugin |
|---|---|
| Windows | gestionnaire de liste de réseau |
| Apple (macOS/iOS) | informations sur le réseau |
| Android | android |
| Linux | gestionnaire de réseau |
Cette fonction est fournie pour des raisons de commodité lorsque la logique précédente est suffisante. Si vous avez besoin d'un plugin spécifique, vous devriez plutôt appeler directement loadBackendByName() ou loadBackendByFeatures().
Détermine un backend approprié à charger et renvoie true si ce backend est déjà chargé ou en cas de chargement réussi. Renvoie false si un autre backend a déjà été chargé ou si le chargement du backend sélectionné échoue.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi instance(), loadBackendByName(), et loadBackendByFeatures().
[since 6.3] QNetworkInformation::Features QNetworkInformation::supportedFeatures() const
Renvoie toutes les fonctionnalités prises en charge par le backend actuel.
Cette fonction a été introduite dans Qt 6.3.
bool QNetworkInformation::supports(QNetworkInformation::Features features) const
Renvoie true si le backend actuellement chargé prend en charge features.
© 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.