QSocketNotifier Class
La classe QSocketNotifier permet de surveiller l'activité d'un descripteur de fichier. En savoir plus...
| En-tête : | #include <QSocketNotifier> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Hérite de : | QObject |
- Liste de tous les membres, y compris les membres hérités
- Membres obsolètes
- QSocketNotifier fait partie de l'API de programmation réseau et des modules « Entrée/Sortie » et « Réseau ».
Types publics
| enum | Type { Read, Write, Exception } |
Fonctions publiques
(since 6.1) | QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr) |
| QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr) | |
| virtual | ~QSocketNotifier() |
| bool | isEnabled() const |
(since 6.1) bool | isValid() const |
(since 6.1) void | setSocket(qintptr socket) |
| qintptr | socket() const |
| QSocketNotifier::Type | type() const |
Slots publics
| void | setEnabled(bool enable) |
Signaux
| void | activated(QSocketDescriptor socket, QSocketNotifier::Type type) |
Fonctions protégées réimplémentées
| virtual bool | event(QEvent *e) override |
Description détaillée
QSocketNotifier permet d’intégrer la boucle d’événements de Qt à d’autres boucles d’événements basées sur des descripteurs de fichiers. Les actions sur les descripteurs de fichiers sont détectées dans la boucle d’événements principale de Qt (QCoreApplication::exec()).
Une fois que vous avez ouvert un périphérique à l'aide d'une API de bas niveau (généralement spécifique à la plate-forme), vous pouvez créer un notificateur de socket pour surveiller le descripteur de fichier. Si le descripteur est transmis au constructeur du notificateur de socket, celui-ci est activé par défaut, c’est-à-dire qu’il émet le signal ` activated()` dès qu’un événement de socket correspondant à son type se produit. Connectez le signal ` activated()` au slot que vous souhaitez voir appelé lorsqu’un événement correspondant au type de votre notificateur de socket se produit.
Vous pouvez créer un notificateur de socket sans lui attribuer de descripteur. Dans ce cas, vous devez appeler la fonction ` setSocket()` après avoir obtenu le descripteur.
Il existe trois types de notificateurs de socket : lecture, écriture et exception. Le type est décrit par l’énumération Type et doit être spécifié lors de la création du notificateur de socket. Une fois celui-ci créé, il peut être déterminé à l’aide de la fonction type(). Notez que si vous devez surveiller à la fois les lectures et les écritures pour un même descripteur de fichier, vous devez créer deux notificateurs de socket. Notez également qu’il n’est pas possible d’installer deux notificateurs de socket de même type (Read, Write, Exception) sur la même socket.
La fonction ` setEnabled()` permet d'activer ou de désactiver le notificateur de socket. Il est généralement conseillé d'activer ou de désactiver explicitement le notificateur de socket, en particulier pour les notificateurs d'écriture. Un notificateur désactivé ignore les événements liés à la socket (ce qui revient à ne pas créer le notificateur de socket). Utilisez la fonction ` isEnabled()` pour déterminer l'état actuel du notificateur.
Enfin, vous pouvez utiliser la fonction ` socket()` pour récupérer l’identifiant du socket. Bien que la classe s’appelle `QSocketNotifier`, elle est normalement utilisée pour d’autres types de périphériques que les sockets. Les fonctions ` QTcpSocket ` et ` QUdpSocket ` fournissent des notifications via des signaux ; il n’est donc généralement pas nécessaire d’utiliser un `QSocketNotifier` avec celles-ci.
Voir également QFile, QProcess, QTcpSocket et QUdpSocket.
Documentation sur les types de membres
enum QSocketNotifier::Type
Cette énumération décrit les différents types d'événements qu'un notificateur de socket peut détecter. Le type doit être spécifié lors de la création du notificateur de socket.
Notez que si vous devez surveiller à la fois les opérations de lecture et d'écriture pour un même descripteur de fichier, vous devez créer deux notificateurs de socket. Notez également qu'il n'est pas possible d'installer deux notificateurs de socket de même type (Lecture, Écriture, Exception) sur la même socket.
| Constante | Valeur | Description |
|---|---|---|
QSocketNotifier::Read | 0 | Il y a des données à lire. |
QSocketNotifier::Write | 1 | Des données peuvent être écrites. |
QSocketNotifier::Exception | 2 | Une exception s'est produite. Nous déconseillons d'utiliser cette fonction. |
Voir également QSocketNotifier() et type().
Documentation sur les fonctions membres
[explicit, since 6.1] QSocketNotifier::QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr)
Crée un notificateur de socket à l'aide de l'type fournie, auquel aucun descripteur n'est attribué. L'argument parent est transmis au constructeur de QObject.
Appelez la fonction ` setSocket()` pour définir le descripteur à surveiller.
Cette fonction a été introduite dans Qt 6.1.
Voir également setSocket(), isValid() et isEnabled().
QSocketNotifier::QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
Crée un notificateur de socket avec l'parent donné. Il active l'socket, et surveille les événements de l'type donné.
Il est généralement conseillé d'activer ou de désactiver explicitement le notificateur de socket, en particulier pour les notificateurs d'écriture.
Remarque pour les utilisateurs de Windows : le socket transmis à QSocketNotifier deviendra non bloquant, même s’il a été créé en tant que socket bloquant.
Voir également setEnabled() et isEnabled().
[virtual noexcept] QSocketNotifier::~QSocketNotifier()
Supprime ce notificateur de socket.
[private signal] void QSocketNotifier::activated(QSocketDescriptor socket, QSocketNotifier::Type type)
Ce signal est émis dès que le notificateur de socket est activé et qu’un événement de socket correspondant à son « type » se produit.
L'identifiant de socket est transmis dans le paramètre « socket ».
Remarque : il s’agit d’un signal privé. Il peut être utilisé dans les connexions de signaux, mais ne peut pas être émis par l’utilisateur.
Remarque : ce signal est surchargé. Pour se connecter à ce signal :
// Connect using qOverload:
connect(socketNotifier, qOverload(&QSocketNotifier::activated),
receiver, &ReceiverClass::slot);
// Or using a lambda:
connect(socketNotifier, qOverload(&QSocketNotifier::activated),
this, [](QSocketDescriptor socket, QSocketNotifier::Type type) { /* handle activated */ }); Voir également ` type()` et ` socket()`.
[override virtual protected] bool QSocketNotifier::event(QEvent *e)
Réimplémente : QObject::event(QEvent *e).
bool QSocketNotifier::isEnabled() const
Renvoie « true » si le notificateur est activé ; sinon, renvoie « false ».
Voir également setEnabled().
[since 6.1] bool QSocketNotifier::isValid() const
Renvoie « true » si le notificateur est valide (c'est-à-dire s'il dispose d'un descripteur attribué) ; sinon, renvoie « false ».
Cette fonction a été introduite dans Qt 6.1.
Voir également setSocket().
[slot] void QSocketNotifier::setEnabled(bool enable)
Si enable est vrai, le notificateur est activé ; sinon, il est désactivé.
Lorsque le notificateur est activé, il émet le signal ` activated()` dès qu’un événement de socket correspondant à son ` type ` se produit. Lorsqu’il est désactivé, il ignore les événements de socket (ce qui revient à ne pas créer le notificateur de socket).
Les notificateurs d’écriture doivent normalement être désactivés immédiatement après l’émission du signal activated()
Voir également isEnabled() et activated().
[since 6.1] void QSocketNotifier::setSocket(qintptr socket)
Attribue l'socket à ce notificateur.
Remarque : le notificateur sera désactivé en conséquence et devra être réactivé.
Cette fonction a été introduite dans Qt 6.1.
Voir également socket(), setEnabled() et isValid().
qintptr QSocketNotifier::socket() const
Renvoie l'identifiant de socket attribué à cet objet.
Voir également setSocket(), isValid() et type().
QSocketNotifier::Type QSocketNotifier::type() const
Renvoie le type d'événement de socket spécifié dans le constructeur.
Voir également socket().
© 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.