Sur cette page

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

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().

ConstanteValeurDescription
QNetworkInformation::Feature::Reachability0x1Si 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::CaptivePortal0x2Si le plugin prend en charge cette fonctionnalité, la propriété isBehindCaptivePortal fournira des résultats utiles. Sinon, elle renverra toujours false.
QNetworkInformation::Feature::TransportMedium0x4Si 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::Metered0x8Si 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

ConstanteValeurDescription
QNetworkInformation::Reachability::Unknown0Si 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::Disconnected1Indique que le système peut ne pas avoir de connectivité du tout.
QNetworkInformation::Reachability::Local2Indique 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::Site3Indique 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::Online4Indique 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.

ConstanteValeurDescription
QNetworkInformation::TransportMedium::Unknown0Renvoyé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::Ethernet1Indique 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::Cellular2Indique que la connexion active utilise un réseau cellulaire.
QNetworkInformation::TransportMedium::WiFi3Indique que la connexion active utilise un réseau Wi-Fi.
QNetworkInformation::TransportMedium::Bluetooth4Indique 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-formeNom du plugin
Windowsgestionnaire de liste de réseau
Apple (macOS/iOS)informations sur le réseau
Androidandroid
Linuxgestionnaire 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.