QAbstractSocket Class
La classe `QAbstractSocket` fournit les fonctionnalités de base communes à tous les types de sockets. En savoir plus...
| En-tête : | #include <QAbstractSocket> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Hérite de : | QIODevice |
| Hérité par : |
- Liste de tous les membres, y compris les membres hérités
- QAbstractSocket fait partie de l'API de programmation réseau.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | BindFlag { ShareAddress, DontShareAddress, ReuseAddressHint, DefaultForPlatform } |
| flags | BindMode |
| enum | NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol } |
| enum | PauseMode { PauseNever, PauseOnSslErrors } |
| flags | PauseModes |
| enum | SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError } |
| enum | SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, …, KeepAliveCountOption } |
| enum | SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, …, ListeningState } |
| enum | SocketType { TcpSocket, UdpSocket, SctpSocket, UnknownSocketType } |
Fonctions publiques
| QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent) | |
| virtual | ~QAbstractSocket() |
| void | abort() |
| virtual bool | bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
| bool | bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
(since 6.2) bool | bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
| virtual void | connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol) |
| void | connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite) |
| virtual void | disconnectFromHost() |
| QAbstractSocket::SocketError | error() const |
| bool | flush() |
| bool | isValid() const |
| QHostAddress | localAddress() const |
| quint16 | localPort() const |
| QAbstractSocket::PauseModes | pauseMode() const |
| QHostAddress | peerAddress() const |
| QString | peerName() const |
| quint16 | peerPort() const |
| QString | protocolTag() const |
| QNetworkProxy | proxy() const |
| qint64 | readBufferSize() const |
| virtual void | resume() |
| void | setPauseMode(QAbstractSocket::PauseModes pauseMode) |
| void | setProtocolTag(const QString &tag) |
| void | setProxy(const QNetworkProxy &networkProxy) |
| virtual void | setReadBufferSize(qint64 size) |
| virtual bool | setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite) |
| virtual void | setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value) |
| virtual qintptr | socketDescriptor() const |
| virtual QVariant | socketOption(QAbstractSocket::SocketOption option) |
| QAbstractSocket::SocketType | socketType() const |
| QAbstractSocket::SocketState | state() const |
| virtual bool | waitForConnected(int msecs = 30000) |
| virtual bool | waitForDisconnected(int msecs = 30000) |
Fonctions publiques réimplémentées
| virtual qint64 | bytesAvailable() const override |
| virtual qint64 | bytesToWrite() const override |
| virtual void | close() override |
| virtual bool | isSequential() const override |
| virtual bool | waitForBytesWritten(int msecs = 30000) override |
| virtual bool | waitForReadyRead(int msecs = 30000) override |
Signaux
| void | connected() |
| void | disconnected() |
| void | errorOccurred(QAbstractSocket::SocketError socketError) |
| void | hostFound() |
| void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
| void | stateChanged(QAbstractSocket::SocketState socketState) |
Fonctions protégées
| void | setLocalAddress(const QHostAddress &address) |
| void | setLocalPort(quint16 port) |
| void | setPeerAddress(const QHostAddress &address) |
| void | setPeerName(const QString &name) |
| void | setPeerPort(quint16 port) |
| void | setSocketError(QAbstractSocket::SocketError socketError) |
| void | setSocketState(QAbstractSocket::SocketState state) |
Fonctions protégées réimplémentées
| virtual qint64 | readData(char *data, qint64 maxSize) override |
| virtual qint64 | readLineData(char *data, qint64 maxlen) override |
| virtual qint64 | skipData(qint64 maxSize) override |
| virtual qint64 | writeData(const char *data, qint64 size) override |
Description détaillée
QAbstractSocket est la classe de base de QTcpSocket et QUdpSocket et contient toutes les fonctionnalités communes à ces deux classes. Si vous avez besoin d'un socket, deux options s'offrent à vous :
- Instancier QTcpSocket ou QUdpSocket.
- Créer un descripteur de socket natif, instancier QAbstractSocket, puis appeler setSocketDescriptor() pour encapsuler la socket native.
TCP (Transmission Control Protocol) est un protocole de transport fiable, orienté flux et orienté connexion. UDP (User Datagram Protocol) est un protocole non fiable, orienté datagrammes et sans connexion. En pratique, cela signifie que TCP est mieux adapté à la transmission continue de données, tandis que le protocole UDP, plus léger, peut être utilisé lorsque la fiabilité n’est pas un critère essentiel.
L’API de `QAbstractSocket` harmonise la plupart des différences entre les deux protocoles. Par exemple, bien que le protocole UDP soit sans connexion, la fonction ` connectToHost()` établit une connexion virtuelle pour les sockets UDP, ce qui vous permet d’utiliser `QAbstractSocket` à peu près de la même manière, quel que soit le protocole sous-jacent. En interne, `QAbstractSocket` mémorise l’adresse et le port passés à la fonction ` connectToHost()`, et des fonctions telles que ` read()` et ` write()` utilisent ces valeurs.
À tout moment, QAbstractSocket possède un état (renvoyé par state()). L’état initial est UnconnectedState. Après l’appel de connectToHost(), la socket passe d’abord à l’état HostLookupState. Si l’hôte est trouvé, QAbstractSocket passe à l’état ConnectingState et émet le signal hostFound(). Une fois la connexion établie, il passe à l’état « ConnectedState » et émet le signal « connected() ». Si une erreur survient à n’importe quelle étape, le signal « errorOccurred() » est émis. Chaque fois que l’état change, le signal « stateChanged() » est émis. Pour plus de commodité, la méthode « isValid() » renvoie « true » si le socket est prêt pour la lecture et l’écriture, mais notez que l’état du socket doit être « ConnectedState » avant que la lecture et l’écriture puissent avoir lieu.
Lisez ou écrivez des données en appelant read() ou write(), ou utilisez les fonctions de commodité readLine() et readAll(). QAbstractSocket hérite également des méthodes getChar(), putChar() et ungetChar() de QIODevice, qui opèrent sur des octets individuels. Le signal bytesWritten() est émis lorsque des données ont été écrites sur la socket. Notez que Qt ne limite pas la taille du tampon d'écriture. Vous pouvez surveiller sa taille en écoutant ce signal.
Le signal « readyRead() » est émis chaque fois qu’un nouveau bloc de données est arrivé. La fonction « bytesAvailable() » renvoie alors le nombre d’octets disponibles pour la lecture. En général, vous connecterez le signal « readyRead() » à un slot et y lirez toutes les données disponibles. Si vous ne lisez pas toutes les données en une seule fois, les données restantes resteront disponibles ultérieurement, et toute nouvelle donnée entrante sera ajoutée au tampon de lecture interne de QAbstractSocket. Pour limiter la taille du tampon de lecture, appelez la fonction setReadBufferSize().
Pour fermer la socket, appelez disconnectFromHost(). QAbstractSocket entre alors dans l’état « QAbstractSocket::ClosingState ». Une fois que toutes les données en attente ont été écrites sur la socket, QAbstractSocket ferme effectivement la socket, entre dans l’état « QAbstractSocket::UnconnectedState » et émet disconnected(). Si vous souhaitez interrompre immédiatement une connexion, en ignorant toutes les données en attente, appelez plutôt la fonction abort(). Si l’hôte distant ferme la connexion, QAbstractSocket émettra le signal errorOccurred(QAbstractSocket::RemoteHostClosedError), pendant lequel l’état du socket restera ConnectedState, puis le signal disconnected() sera émis.
Le port et l’adresse du pair connecté sont récupérés en appelant peerPort() et peerAddress(). peerName() renvoie le nom d’hôte du pair, tel qu’il a été passé à connectToHost(). localPort() et localAddress() renvoient respectivement le port et l’adresse de la socket locale.
QAbstractSocket fournit un ensemble de fonctions qui suspendent le thread appelant jusqu’à ce que certains signaux soient émis. Ces fonctions peuvent être utilisées pour implémenter des sockets bloquantes :
- waitForConnected() bloque jusqu’à ce qu’une connexion soit établie.
- waitForReadyRead() bloque jusqu’à ce que de nouvelles données soient disponibles pour la lecture.
- waitForBytesWritten() bloque jusqu’à ce qu’un paquet de données ait été écrit sur le socket.
- waitForDisconnected() bloque jusqu'à ce que la connexion soit fermée.
Voici un exemple :
int numRead = 0, numReadTotal = 0;
char buffer[50];
forever {
numRead = socket.read(buffer, 50);
// do whatever with array
numReadTotal += numRead;
if (numRead == 0 && !socket.waitForReadyRead())
break;
}Si waitForReadyRead() renvoie false, cela signifie que la connexion a été fermée ou qu’une erreur s’est produite.
La programmation avec un socket bloquant est radicalement différente de celle avec un socket non bloquant. Un socket bloquant ne nécessite pas de boucle d’événements et conduit généralement à un code plus simple. Cependant, dans une application avec interface graphique, les sockets bloquants ne doivent être utilisés que dans des threads non liés à l’interface graphique, afin d’éviter le gel de celle-ci. Consultez les exemples `fortuneclient ` et `blockingfortuneclient ` pour avoir un aperçu des deux approches.
Remarque : nous déconseillons l'utilisation des fonctions bloquantes en association avec des signaux. Il convient d'utiliser l'une ou l'autre de ces deux possibilités.
QAbstractSocket peut être utilisé avec les opérateurs de flux d’ QTextStream et d’ QDataStream(opérateur <<() et opérateur >>()). Il y a toutefois un point à prendre en compte : vous devez vous assurer qu’il y a suffisamment de données disponibles avant de tenter de les lire à l’aide de l’opérateur >>().
Voir également QNetworkAccessManager et QTcpServer.
Documentation sur les types membres
enum QAbstractSocket::BindFlag
flags QAbstractSocket::BindMode
Cette énumération décrit les différents indicateurs que vous pouvez passer pour modifier le comportement de la fonction ` QAbstractSocket::bind()`.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::ShareAddress | 0x1 | Autorise d’autres services à se lier à la même adresse et au même port. Cela s’avère utile lorsque plusieurs processus se partagent la charge d’un même service en écoutant sur la même adresse et le même port (par exemple, un serveur web disposant de plusieurs écouteurs pré-forkés peut considérablement améliorer le temps de réponse). Cependant, comme n’importe quel service est autorisé à se reconnecter, cette option soulève certaines considérations de sécurité. Notez qu’en combinant cette option avec ReuseAddressHint, vous autoriserez également votre service à se reconnecter à une adresse partagée existante. Sous Unix, cela équivaut à l’option de socket SO_REUSEADDR. Sous Windows, il s’agit du comportement par défaut ; cette option est donc ignorée. |
QAbstractSocket::DontShareAddress | 0x2 | Lie l’adresse et le port de manière exclusive, de sorte qu’aucun autre service ne soit autorisé à se relier. En transmettant cette option à ` QAbstractSocket::bind()`, vous avez la garantie qu’en cas de réussite, votre service est le seul à écouter sur cette adresse et ce port. Aucun service n’est autorisé à se relier, même s’il transmet `ReuseAddressHint`. Cette option offre davantage de sécurité que ShareAddress, mais sur certains systèmes d’exploitation, elle nécessite d’exécuter le serveur avec des privilèges d’administrateur. Sous Unix et macOS, le non-partage est le comportement par défaut lors de la liaison d’une adresse et d’un port ; cette option est donc ignorée. Sous Windows, cette option utilise l’option de socket SO_EXCLUSIVEADDRUSE. |
QAbstractSocket::ReuseAddressHint | 0x4 | Indique à ` QAbstractSocket ` qu’il doit tenter de relier le service même si l’adresse et le port sont déjà liés par un autre socket. Sous Windows et Unix, cela équivaut à l’option de socket SO_REUSEADDR. |
QAbstractSocket::DefaultForPlatform | 0x0 | Option par défaut pour la plate-forme actuelle. Sous Unix et macOS, cela équivaut à (DontShareAddress + ReuseAddressHint), et sous Windows, cela équivaut à ShareAddress. |
Le type `BindMode` est un `typedef` pour ` QFlags<BindFlag>`. Il stocke une combinaison (ou) de valeurs `BindFlag`.
enum QAbstractSocket::NetworkLayerProtocol
Cette énumération décrit les valeurs des protocoles de la couche réseau utilisées dans Qt Network.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::IPv4Protocol | 0 | IPv4 |
QAbstractSocket::IPv6Protocol | 1 | IPv6 |
QAbstractSocket::AnyIPProtocol | 2 | IPv4 ou IPv6 |
QAbstractSocket::UnknownNetworkLayerProtocol | -1 | Autre que IPv4 et IPv6 |
Voir aussi QHostAddress::protocol().
enum QAbstractSocket::PauseMode
flags QAbstractSocket::PauseModes
Cette énumération décrit le comportement à adopter lorsque la socket doit suspendre la poursuite du transfert de données. La seule notification actuellement prise en charge est ` QSslSocket::sslErrors()`.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::PauseNever | 0x0 | Ne pas interrompre le transfert de données sur la socket. Il s’agit du comportement par défaut, qui correspond à celui de Qt 4. |
QAbstractSocket::PauseOnSslErrors | 0x1 | Suspendre le transfert de données sur le socket à la réception d'une notification d'erreur SSL. C'est-à-dire QSslSocket::sslErrors(). |
Le type `PauseModes` est un `typedef` pour ` QFlags<PauseMode>`. Il stocke une combinaison (ou) de valeurs `PauseMode`.
enum QAbstractSocket::SocketError
Cette énumération décrit les erreurs de socket pouvant survenir.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::ConnectionRefusedError | 0 | La connexion a été refusée par le pair (ou le délai d'attente a expiré). |
QAbstractSocket::RemoteHostClosedError | 1 | L'hôte distant a fermé la connexion. Notez que le socket client (c'est-à-dire ce socket) sera fermé une fois que la notification de fermeture distante aura été envoyée. |
QAbstractSocket::HostNotFoundError | 2 | L'adresse de l'hôte est introuvable. |
QAbstractSocket::SocketAccessError | 3 | L'opération sur le socket a échoué car l'application ne disposait pas des privilèges requis. |
QAbstractSocket::SocketResourceError | 4 | Le système local a épuisé ses ressources (par exemple, trop de sockets). |
QAbstractSocket::SocketTimeoutError | 5 | L'opération sur le socket a expiré. |
QAbstractSocket::DatagramTooLargeError | 6 | Le datagramme dépassait la limite du système d'exploitation (qui peut être aussi faible que 8 192 octets). |
QAbstractSocket::NetworkError | 7 | Une erreur s'est produite au niveau du réseau (par exemple, le câble réseau a été débranché par inadvertance). |
QAbstractSocket::AddressInUseError | 8 | L'adresse spécifiée à la fonction ` QAbstractSocket::bind()` est déjà utilisée et a été définie comme exclusive. |
QAbstractSocket::SocketAddressNotAvailableError | 9 | L'adresse spécifiée à la fonction ` QAbstractSocket::bind()` n'appartient pas à l'hôte. |
QAbstractSocket::UnsupportedSocketOperationError | 10 | L’opération de socket demandée n’est pas prise en charge par le système d’exploitation local (par exemple, absence de prise en charge d’IPv6). |
QAbstractSocket::ProxyAuthenticationRequiredError | 12 | Le socket utilise un proxy, et ce dernier nécessite une authentification. |
QAbstractSocket::SslHandshakeFailedError | 13 | La négociation SSL/TLS a échoué, la connexion a donc été fermée (utilisé uniquement dans QSslSocket) |
QAbstractSocket::UnfinishedSocketOperationError | 11 | Utilisé uniquement par QAbstractSocketEngine. La dernière opération tentée n’est pas encore terminée (toujours en cours en arrière-plan). |
QAbstractSocket::ProxyConnectionRefusedError | 14 | Impossible de contacter le serveur proxy car la connexion à ce serveur a été refusée |
QAbstractSocket::ProxyConnectionClosedError | 15 | La connexion au serveur proxy a été fermée de manière inattendue (avant que la connexion au pair final ne soit établie). |
QAbstractSocket::ProxyConnectionTimeoutError | 16 | Le délai d'attente de la connexion au serveur proxy a expiré ou le serveur proxy a cessé de répondre pendant la phase d'authentification. |
QAbstractSocket::ProxyNotFoundError | 17 | L'adresse du proxy définie avec setProxy() (ou le proxy de l'application) est introuvable. |
QAbstractSocket::ProxyProtocolError | 18 | La négociation de connexion avec le serveur proxy a échoué, car la réponse du serveur proxy n'a pas pu être interprétée. |
QAbstractSocket::OperationError | 19 | Une opération a été tentée alors que le socket se trouvait dans un état ne le permettant pas. |
QAbstractSocket::SslInternalError | 20 | La bibliothèque SSL utilisée a signalé une erreur interne. Cela résulte probablement d’une mauvaise installation ou d’une configuration incorrecte de la bibliothèque. |
QAbstractSocket::SslInvalidUserDataError | 21 | Des données non valides (certificat, clé, algorithme de chiffrement, etc.) ont été fournies et leur utilisation a entraîné une erreur dans la bibliothèque SSL. |
QAbstractSocket::TemporaryError | 22 | Une erreur temporaire s’est produite (par exemple, l’opération se bloquerait alors que le socket est non bloquant). |
QAbstractSocket::UnknownSocketError | -1 | Une erreur non identifiée s’est produite. |
Voir également QAbstractSocket::error() et QAbstractSocket::errorOccurred().
enum QAbstractSocket::SocketOption
Cette énumération représente les options pouvant être définies sur un socket. Si nécessaire, elles peuvent être définies après avoir reçu le signal ` connected()` provenant du socket ou après avoir reçu un nouveau socket via une fonction ` QTcpServer`.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::LowDelayOption | 0 | Tente d’optimiser le socket pour une faible latence. Pour une connexion « QTcpSocket », cela activerait l’option TCP_NODELAY et désactiverait l’algorithme de Nagle. Définis cette valeur sur 1 pour l’activer. |
QAbstractSocket::KeepAliveOption | 1 | Définissez cette valeur sur 1 pour activer l’option de socket SO_KEEPALIVE |
QAbstractSocket::MulticastTtlOption | 2 | Définissez cette valeur sur un nombre entier pour configurer l'option de socket IP_MULTICAST_TTL (TTL pour les datagrammes multicast). |
QAbstractSocket::MulticastLoopbackOption | 3 | Définissez cette valeur sur 1 pour activer l'option de socket IP_MULTICAST_LOOP (boucle de retour multicast). |
QAbstractSocket::TypeOfServiceOption | 4 | Cette option n’est pas prise en charge sous Windows. Elle correspond à l’option de socket IP_TOS. Pour connaître les valeurs possibles, consultez le tableau ci-dessous. |
QAbstractSocket::SendBufferSizeSocketOption | 5 | Définit la taille du tampon d’envoi de la socket en octets au niveau du système d’exploitation. Cela correspond à l’option de socket SO_SNDBUF. Cette option n’affecte pas les tampons QIODevice ou QAbstractSocket. Cette valeur d’énumération a été introduite dans Qt 5.3. |
QAbstractSocket::ReceiveBufferSizeSocketOption | 6 | Définit la taille du tampon de réception de la socket en octets au niveau du système d’exploitation. Cela correspond à l’option de socket SO_RCVBUF. Cette option n’affecte pas les tampons QIODevice ou QAbstractSocket (voir setReadBufferSize()). Cette valeur d’énumération a été introduite dans Qt 5.3. |
QAbstractSocket::PathMtuSocketOption | 7 | Récupère la valeur de l’unité de transmission maximale du chemin (PMTU) actuellement connue par la pile IP, le cas échéant. Certaines piles IP permettent également de définir la MTU pour la transmission. Cette valeur d’énumération a été introduite dans Qt 5.11. |
QAbstractSocket::KeepAliveIdleOption | 8 | Durée en secondes pendant laquelle la connexion doit rester inactive avant que TCP ne commence à envoyer des sondes de maintien de connexion si KeepAliveOption est activée. Cette valeur d’énumération a été introduite dans Qt 6.11. |
QAbstractSocket::KeepAliveIntervalOption | 9 | Le délai, en secondes, entre chaque sonde de maintien de connexion, si l’option KeepAliveOption est activée. Cette option n’est pas prise en charge par tous les systèmes d’exploitation. Cette valeur d’énumération a été introduite dans Qt 6.11. |
QAbstractSocket::KeepAliveCountOption | 10 | Nombre maximal de sondes de maintien de connexion à envoyer avant que TCP ne coupe la connexion, si l'option KeepAliveOption est activée. Cette option n'est pas prise en charge par tous les systèmes d'exploitation. Cette valeur d'énumération a été introduite dans Qt 6.11. |
Les valeurs possibles pour TypeOfServiceOption sont les suivantes :
| Valeur | Description |
|---|---|
| 224 | Contrôle du réseau |
| 192 | Contrôle inter-réseaux |
| 160 | CRITIC/ECP |
| 128 | Contournement Flash |
| 96 | Flash |
| 64 | Immédiat |
| 32 | Prioritaire |
| 0 | Routine |
Voir également QAbstractSocket::setSocketOption() et QAbstractSocket::socketOption().
enum QAbstractSocket::SocketState
Cette énumération décrit les différents états dans lesquels un socket peut se trouver.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::UnconnectedState | 0 | La socket n'est pas connectée. |
QAbstractSocket::HostLookupState | 1 | Le socket effectue une recherche de nom d'hôte. |
QAbstractSocket::ConnectingState | 2 | Le socket a commencé à établir une connexion. |
QAbstractSocket::ConnectedState | 3 | Une connexion est établie. |
QAbstractSocket::BoundState | 4 | Le socket est lié à une adresse et à un port. |
QAbstractSocket::ClosingState | 6 | Le socket est sur le point de se fermer (des données peuvent encore être en attente d'écriture). |
QAbstractSocket::ListeningState | 5 | À usage interne uniquement. |
Voir aussi QAbstractSocket::state().
enum QAbstractSocket::SocketType
Cette énumération décrit le protocole de la couche de transport.
| Constante | Valeur | Description |
|---|---|---|
QAbstractSocket::TcpSocket | 0 | TCP |
QAbstractSocket::UdpSocket | 1 | UDP |
QAbstractSocket::SctpSocket | 2 | SCTP |
QAbstractSocket::UnknownSocketType | -1 | Autres que TCP, UDP et SCTP |
Voir aussi QAbstractSocket::socketType().
Documentation sur les fonctions membres
QAbstractSocket::QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)
Crée un nouveau socket abstrait de type socketType. L'argument ` parent ` est transmis au constructeur de QObject.
Voir aussi ` socketType()`, ` QTcpSocket` et ` QUdpSocket`.
[virtual noexcept] QAbstractSocket::~QAbstractSocket()
Supprime le socket.
void QAbstractSocket::abort()
Interrompt la connexion en cours et réinitialise le socket. Contrairement à la fonction ` disconnectFromHost()`, cette fonction ferme immédiatement le socket, en supprimant toutes les données en attente dans le tampon d'écriture.
Voir également disconnectFromHost() et close().
[virtual] bool QAbstractSocket::bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
Effectue une liaison avec l'adresse address sur le port port, en utilisant le nom de domaine BindMode mode .
Pour les sockets UDP, une fois la liaison établie, le signal QUdpSocket::readyRead() est émis dès qu’un datagramme UDP arrive à l’adresse et au port spécifiés. Cette fonction est donc utile pour écrire des serveurs UDP.
Pour les sockets TCP, cette fonction peut être utilisée pour spécifier l’interface à utiliser pour une connexion sortante, ce qui est utile en cas de présence de plusieurs interfaces réseau.
Par défaut, le socket est lié à l’adresse DefaultForPlatform BindMode . Si aucun port n’est spécifié, un port aléatoire est choisi.
En cas de succès, la fonction renvoie « true » et le socket passe à l’état « BoundState » ; dans le cas contraire, elle renvoie « false ».
bool QAbstractSocket::bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
Se lie à l'adresse QHostAddress:Any sur le port port, en utilisant le BindMode mode .
Par défaut, la socket est liée à l'adresse DefaultForPlatform BindMode . Si aucun port n'est spécifié, un port aléatoire est choisi.
Il s'agit d'une fonction surchargée.
[since 6.2] bool QAbstractSocket::bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
Se lie à l'adresse spéciale addr sur le port port, en utilisant le BindMode mode .
Par défaut, la socket est liée à l'adresse DefaultForPlatform sur le port BindMode. Si aucun port n'est spécifié, un port aléatoire est choisi.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.2.
[override virtual] qint64 QAbstractSocket::bytesAvailable() const
Réimplémente : ` QIODevice::bytesAvailable()` const.
Renvoie le nombre d’octets entrants en attente de lecture.
Voir également bytesToWrite() et read().
[override virtual] qint64 QAbstractSocket::bytesToWrite() const
Réimplémente : ` QIODevice::bytesToWrite()` const.
Renvoie le nombre d’octets en attente d’écriture. Ces octets sont écrits lorsque le contrôle revient à la boucle d’événements ou lorsque la fonction flush() est appelée.
Voir également bytesAvailable() et flush().
[override virtual] void QAbstractSocket::close()
Réimplémente : QIODevice::close().
Ferme le périphérique d'E/S associé au socket et appelle disconnectFromHost() pour fermer la connexion du socket.
Voir QIODevice::close() pour une description des actions qui se produisent lorsqu'un périphérique d'E/S est fermé.
Voir également abort().
[virtual] void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
Tente d'établir une connexion à hostName via l'adresse IP indiquée port. Le paramètre protocol permet de spécifier le protocole réseau à utiliser (par exemple, IPv4 ou IPv6).
Le socket est ouvert sur l’ openMode indiquée et accède d’abord à HostLookupState, puis effectue une recherche du nom d’hôte de hostName. Si la recherche aboutit, hostFound() est émis et QAbstractSocket accède à ConnectingState. Il tente ensuite de se connecter à l’adresse ou aux adresses renvoyées par la recherche. Enfin, si une connexion est établie, QAbstractSocket accède à ConnectedState et émet connected().
À tout moment, le socket peut émettre errorOccurred() pour signaler qu’une erreur s’est produite.
hostName peut être une adresse IP sous forme de chaîne de caractères (par exemple, « 43.195.83.32 ») ou un nom d’hôte (par exemple, « example.com »). La fonction QAbstractSocket n’effectuera une recherche que si nécessaire. La fonction port utilise l’ordre natif des octets.
Voir également state(), peerName(), peerAddress(), peerPort() et waitForConnected().
void QAbstractSocket::connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite)
Tentative de connexion à address sur le port port.
Il s’agit d’une fonction surchargée.
[signal] void QAbstractSocket::connected()
Ce signal est émis après l'appel de la fonction connectToHost() et une fois la connexion établie avec succès.
Remarque : sur certains systèmes d'exploitation, le signal connected() peut être émis directement par l'appel connectToHost() pour les connexions à localhost.
Voir aussi ` connectToHost()` et ` disconnected()`.
[virtual] void QAbstractSocket::disconnectFromHost()
Tente de fermer le socket. S’il reste des données en attente d’écriture, ` QAbstractSocket ` passe en état « ClosingState » et attend que toutes les données aient été écrites. À terme, il passe en état « UnconnectedState » et émet le signal ` disconnected()`.
Voir également connectToHost().
[signal] void QAbstractSocket::disconnected()
Ce signal est émis lorsque la connexion a été interrompue.
Avertissement : si vous devez supprimer l'sender() de ce signal dans un slot qui y est connecté, utilisez la fonction deleteLater().
Voir également connectToHost(), disconnectFromHost() et abort().
QAbstractSocket::SocketError QAbstractSocket::error() const
Renvoie le type de l'erreur qui s'est produite en dernier.
Voir également state() et errorString().
[signal] void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError)
Ce signal est émis lorsqu’une erreur s’est produite. Le paramètre ` socketError ` décrit le type d’erreur survenue.
Lorsque ce signal est émis, il se peut que le socket ne soit pas prêt pour une tentative de reconnexion. Dans ce cas, les tentatives de reconnexion doivent être effectuées à partir de la boucle d'événements. Par exemple, utilisez QChronoTimer::singleShot() avec un délai d'expiration de 0 ns.
QAbstractSocket::SocketError n'est pas un métatype enregistré ; pour les connexions en file d'attente, vous devrez donc l'enregistrer à l'aide des fonctions Q_DECLARE_METATYPE() et qRegisterMetaType().
Voir également error(), errorString() et Création de types Qt personnalisés.
bool QAbstractSocket::flush()
Cette fonction écrit autant de données que possible depuis le tampon d'écriture interne vers la socket réseau sous-jacente, sans blocage. Si des données ont été écrites, cette fonction renvoie ` true` ; dans le cas contraire, elle renvoie `false`.
Appelez cette fonction si vous avez besoin que ` QAbstractSocket ` commence immédiatement à envoyer les données mises en mémoire tampon. Le nombre d’octets écrits avec succès dépend du système d’exploitation. Dans la plupart des cas, vous n’avez pas besoin d’appeler cette fonction, car ` QAbstractSocket ` commencera automatiquement à envoyer les données dès que le contrôle reviendra à la boucle d’événements. En l’absence de boucle d’événements, appelez plutôt ` waitForBytesWritten()`.
Voir également ` write()` et ` waitForBytesWritten()`.
[signal] void QAbstractSocket::hostFound()
Ce signal est émis après l'appel de la fonction connectToHost() et une fois que la recherche de l'hôte a abouti.
Remarque : depuis Qt 4.6.3, QAbstractSocket peut émettre hostFound() directement à partir de l'appel connectToHost(), car un résultat DNS pourrait avoir été mis en cache.
Voir également connected().
[override virtual] bool QAbstractSocket::isSequential() const
Réimplémente : QIODevice::isSequential() const.
bool QAbstractSocket::isValid() const
Renvoie « true » si le socket est valide et prêt à être utilisé ; sinon, renvoie « false ».
Remarque : l’état du socket doit être « ConnectedState » avant que la lecture et l’écriture puissent avoir lieu.
Voir également state().
QHostAddress QAbstractSocket::localAddress() const
Renvoie l'adresse hôte du socket local si elle est disponible ; sinon, renvoie QHostAddress::Null.
Il s'agit généralement de l'adresse IP principale de l'hôte, mais elle peut être QHostAddress::LocalHost (127.0.0.1) pour les connexions à l'hôte local.
Voir également localPort(), peerAddress() et setLocalAddress().
quint16 QAbstractSocket::localPort() const
Renvoie le numéro de port de l'hôte (dans l'ordre natif des octets) de la socket locale s'il est disponible ; sinon, renvoie 0.
Voir également localAddress(), peerPort() et setLocalPort().
QAbstractSocket::PauseModes QAbstractSocket::pauseMode() const
Renvoie le mode de pause de cette socket.
Voir également setPauseMode() et resume().
QHostAddress QAbstractSocket::peerAddress() const
Renvoie l'adresse du pair connecté si le socket est en mode « ConnectedState » ; sinon, renvoie « QHostAddress::Null ».
Voir également peerName(), peerPort(), localAddress() et setPeerAddress().
QString QAbstractSocket::peerName() const
Renvoie le nom du pair tel que spécifié par la fonction connectToHost(), ou un objet QString vide si la fonction connectToHost() n'a pas été appelée.
Voir également peerAddress(), peerPort() et setPeerName().
quint16 QAbstractSocket::peerPort() const
Renvoie le port du pair connecté si le socket se trouve dans l'état « ConnectedState » ; sinon, renvoie 0.
Voir également peerAddress(), localPort() et setPeerPort().
QString QAbstractSocket::protocolTag() const
Renvoie l'identifiant de protocole associé à cette socket. Si cet identifiant est défini, il est transmis à ` QNetworkProxyQuery ` lors de la création interne de cette dernière afin d'indiquer l'identifiant de protocole à utiliser.
Voir également setProtocolTag() et QNetworkProxyQuery.
QNetworkProxy QAbstractSocket::proxy() const
Renvoie le proxy réseau associé à cette socket. Par défaut, QNetworkProxy::DefaultProxy est utilisé, ce qui signifie que cette socket interrogera les paramètres de proxy par défaut de l'application.
Voir également setProxy(), QNetworkProxy et QNetworkProxyFactory.
[signal] void QAbstractSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
Ce signal peut être émis lorsqu'une connexion « proxy » nécessitant une authentification est utilisée. L'objet « authenticator » peut alors être renseigné avec les informations requises pour permettre l'authentification et poursuivre la connexion.
Remarque : il n'est pas possible d'utiliser une connexion en file d'attente (QueuedConnection) pour se connecter à ce signal, car la connexion échouera si l'authentificateur n'a pas été renseigné avec les nouvelles informations lorsque le signal revient.
Voir également QAuthenticator et QNetworkProxy.
qint64 QAbstractSocket::readBufferSize() const
Renvoie la taille du tampon de lecture interne. Cela limite la quantité de données que le client peut recevoir avant que vous n'appeliez read() ou readAll().
Une taille de tampon de lecture égale à 0 (valeur par défaut) signifie que le tampon n'a pas de limite de taille, ce qui garantit qu'aucune donnée n'est perdue.
Voir également setReadBufferSize() et read().
[override virtual protected] qint64 QAbstractSocket::readData(char *data, qint64 maxSize)
Réimplémentation de : QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QAbstractSocket::readLineData(char *data, qint64 maxlen)
Réimplémentation de : QIODevice::readLineData(char *data, qint64 maxSize).
[virtual] void QAbstractSocket::resume()
Poursuit le transfert de données sur le socket. Cette méthode ne doit être utilisée qu’après avoir configuré le socket pour qu’il se mette en pause à la réception d’une notification et qu’une notification ait effectivement été reçue. La seule notification actuellement prise en charge est ` QSslSocket::sslErrors()` (). L’appel de cette méthode alors que le socket n’est pas en pause entraîne un comportement indéfini.
Voir également pauseMode() et setPauseMode().
[protected] void QAbstractSocket::setLocalAddress(const QHostAddress &address)
Définit l'adresse côté local d'une connexion à address.
Vous pouvez appeler cette fonction dans une sous-classe de ` QAbstractSocket ` pour modifier la valeur renvoyée par la fonction ` localAddress()` une fois la connexion établie. Cette fonctionnalité est couramment utilisée par les connexions proxy pour la configuration des connexions virtuelles.
Notez que cette fonction ne lie pas l'adresse locale du socket avant l'établissement d'une connexion (par exemple, ` QAbstractSocket::bind()`).
Voir également localAddress(), setLocalPort() et setPeerAddress().
[protected] void QAbstractSocket::setLocalPort(quint16 port)
Définit le port côté local d'une connexion sur port.
Vous pouvez appeler cette fonction dans une sous-classe de ` QAbstractSocket ` pour modifier la valeur renvoyée par la fonction ` localPort()` une fois la connexion établie. Cette fonctionnalité est couramment utilisée par les connexions proxy pour les paramètres de connexion virtuelle.
Notez que cette fonction ne lie pas le port local du socket avant l'établissement d'une connexion (par exemple, ` QAbstractSocket::bind()`).
Voir également localPort(), localAddress(), setLocalAddress() et setPeerPort().
void QAbstractSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)
Détermine s'il faut mettre en pause à la réception d'une notification. Le paramètre ` pauseMode ` spécifie les conditions dans lesquelles le socket doit être mis en pause. La seule notification actuellement prise en charge est QSslSocket::sslErrors(). Si cette option est définie sur PauseOnSslErrors, le transfert de données sur le socket sera mis en pause et devra être réactivé explicitement en appelant resume(). Par défaut, cette option est définie sur PauseNever. Cette option doit être appelée avant de se connecter au serveur, sinon cela entraînera un comportement indéfini.
Voir également pauseMode() et resume().
[protected] void QAbstractSocket::setPeerAddress(const QHostAddress &address)
Définit l'adresse du côté distant de la connexion sur address.
Vous pouvez appeler cette fonction dans une sous-classe de ` QAbstractSocket ` pour modifier la valeur de retour de la fonction ` peerAddress()` une fois la connexion établie. Cette fonctionnalité est couramment utilisée par les connexions proxy pour les paramètres de connexion virtuelle.
Voir également peerAddress(), setPeerPort() et setLocalAddress().
[protected] void QAbstractSocket::setPeerName(const QString &name)
Définit le nom d'hôte du pair distant sur name.
Vous pouvez appeler cette fonction dans une sous-classe de QAbstractSocket pour modifier la valeur de retour de la fonction peerName() une fois la connexion établie. Cette fonctionnalité est couramment utilisée par les connexions proxy pour les paramètres de connexion virtuelle.
Voir également peerName().
[protected] void QAbstractSocket::setPeerPort(quint16 port)
Définit le port côté distant de la connexion sur port.
Vous pouvez appeler cette fonction dans une sous-classe de ` QAbstractSocket ` pour modifier la valeur de retour de la fonction ` peerPort()` une fois la connexion établie. Cette fonctionnalité est couramment utilisée par les connexions proxy pour les paramètres de connexion virtuelle.
Voir également peerPort(), setPeerAddress() et setLocalPort().
void QAbstractSocket::setProtocolTag(const QString &tag)
Définit l'identifiant de protocole de cette socket sur « tag ».
Voir également protocolTag().
void QAbstractSocket::setProxy(const QNetworkProxy &networkProxy)
Définit le proxy réseau explicite de ce socket sur networkProxy.
Pour désactiver l'utilisation d'un proxy pour ce socket, utilisez le type de proxy « QNetworkProxy::NoProxy » :
socket->setProxy(QNetworkProxy::NoProxy);La valeur par défaut du proxy est « QNetworkProxy::DefaultProxy », ce qui signifie que le socket utilisera les paramètres de l’application : si un proxy est défini avec « QNetworkProxy::setApplicationProxy », il l’utilisera ; sinon, si une fabrique est définie avec « QNetworkProxyFactory::setApplicationProxyFactory », il interrogera cette fabrique avec le type « QNetworkProxyQuery::TcpSocket ».
Voir également proxy(), QNetworkProxy et QNetworkProxyFactory::queryProxy().
[virtual] void QAbstractSocket::setReadBufferSize(qint64 size)
Définit la taille du tampon de lecture interne de la fonction ` QAbstractSocket` à size octets.
Si la taille du tampon est limitée à une certaine valeur, ` QAbstractSocket ` ne mettra pas en tampon plus de données que cette taille. Exceptionnellement, une taille de tampon égale à 0 signifie que le tampon de lecture est illimité et que toutes les données entrantes sont mises en tampon. C'est la valeur par défaut.
Cette option est utile si vous ne lisez les données qu’à certains moments (par exemple, dans une application de streaming en temps réel) ou si vous souhaitez protéger votre socket contre la réception d’un volume trop important de données, ce qui pourrait finir par entraîner un épuisement de la mémoire de votre application.
Seule la fonction ` QTcpSocket ` utilise le tampon interne de ` QAbstractSocket` ; la fonction ` QUdpSocket ` n’utilise aucun tampon, mais s’appuie plutôt sur la mise en tampon implicite fournie par le système d’exploitation. De ce fait, l’appel de cette fonction sur ` QUdpSocket ` n’a aucun effet.
Voir également readBufferSize() et read().
[virtual] bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
Initialise QAbstractSocket avec le descripteur de socket natif socketDescriptor. Renvoie true si socketDescriptor est reconnu comme un descripteur de socket valide ; sinon, renvoie false. La socket est ouverte dans le mode spécifié par openMode et passe à l'état spécifié par socketState. Les tampons de lecture et d'écriture sont vidés, ce qui entraîne la suppression de toutes les données en attente.
Remarque : il n’est pas possible d’initialiser deux sockets abstraites avec le même descripteur de socket natif.
Voir également socketDescriptor().
[protected] void QAbstractSocket::setSocketError(QAbstractSocket::SocketError socketError)
Définit le type de la dernière erreur survenue dans ` socketError`.
Voir également setSocketState() et setErrorString().
[virtual] void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
Définit la fonction ` option ` indiquée sur la valeur décrite par ` value`.
Remarque : comme les options sont définies sur un socket interne, elles ne s’appliquent que si le socket a été créé. Cela n’est garanti qu’après un appel à bind(), ou lorsque connected() a été émis.
Voir également socketOption().
[protected] void QAbstractSocket::setSocketState(QAbstractSocket::SocketState state)
Définit l'état de la socket sur « state ».
Voir aussi state().
[override virtual protected] qint64 QAbstractSocket::skipData(qint64 maxSize)
Réimplémente : QIODevice::skipData(qint64 maxSize).
[virtual] qintptr QAbstractSocket::socketDescriptor() const
Renvoie le descripteur de socket natif de l'objet ` QAbstractSocket ` s'il est disponible ; sinon, renvoie -1.
Si le socket utilise la fonction ` QNetworkProxy`, le descripteur renvoyé peut ne pas être utilisable avec les fonctions de socket natives.
Le descripteur de socket n'est pas disponible lorsque QAbstractSocket est en mode « UnconnectedState ».
Voir aussi setSocketDescriptor().
[virtual] QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)
Renvoie la valeur de l'option « option ».
Voir aussi setSocketOption().
QAbstractSocket::SocketType QAbstractSocket::socketType() const
Renvoie le type de socket (TCP, UDP ou autre).
Voir également QTcpSocket et QUdpSocket.
QAbstractSocket::SocketState QAbstractSocket::state() const
Renvoie l'état du socket.
Voir aussi error().
[signal] void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)
Ce signal est émis chaque fois que l'état de ` QAbstractSocket` change. Le paramètre ` socketState ` correspond au nouvel état.
QAbstractSocket::SocketState n'est pas un métatype enregistré ; par conséquent, pour les connexions mises en file d'attente, vous devrez l'enregistrer à l'aide des fonctions Q_DECLARE_METATYPE() et qRegisterMetaType().
Voir également state() et Création de types Qt personnalisés.
[override virtual] bool QAbstractSocket::waitForBytesWritten(int msecs = 30000)
Réimplémentation de : QIODevice::waitForBytesWritten(int msecs).
Cette fonction reste bloquée jusqu’à ce qu’au moins un octet ait été écrit sur le socket et que le signal bytesWritten() ait été émis. La fonction expire après msecs millisecondes ; le délai d’expiration par défaut est de 30 000 millisecondes.
La fonction renvoie « true » si le signal « bytesWritten() » est émis ; sinon, elle renvoie « false » (si une erreur s’est produite ou si le délai d’attente a expiré).
Remarque : cette fonction peut échouer de manière aléatoire sous Windows. Envisagez d’utiliser la boucle d’événements et le signal bytesWritten() si votre logiciel est destiné à fonctionner sous Windows.
Voir aussi ` waitForReadyRead()`.
[virtual] bool QAbstractSocket::waitForConnected(int msecs = 30000)
Attend que le socket soit connecté, pendant au maximum msecs millisecondes. Si la connexion a été établie, cette fonction renvoie true; sinon, elle renvoie false. Si elle renvoie false, vous pouvez appeler error() pour déterminer la cause de l'erreur.
L'exemple suivant attend jusqu'à une seconde que la connexion soit établie :
socket->connectToHost("imap", 143);
if (socket->waitForConnected(1000))
qDebug("Connected!");Si msecs vaut -1, cette fonction n'appliquera pas de délai d'expiration.
Remarque : cette fonction peut attendre un peu plus longtemps que ` msecs`, en fonction du temps nécessaire pour effectuer la recherche de l'hôte.
Remarque : les appelsmultiples à cette fonction n'entraînent pas d'accumulation du temps d'attente. Si la fonction atteint le délai d'expiration, le processus de connexion sera interrompu.
Remarque : cette fonction peut échouer de manière aléatoire sous Windows. Envisagez d'utiliser la boucle d'événements et le signal ` connected()` si votre logiciel est destiné à fonctionner sous Windows.
Voir également connectToHost() et connected().
[virtual] bool QAbstractSocket::waitForDisconnected(int msecs = 30000)
Attend que la connexion soit déconnectée, pendant un délai maximal de msecs millisecondes. Si la connexion a été déconnectée avec succès, cette fonction renvoie true; dans le cas contraire, elle renvoie false (si l'opération a dépassé le délai d'attente, si une erreur s'est produite ou si ce QAbstractSocket est déjà déconnecté). Si elle renvoie false, vous pouvez appeler error() pour déterminer la cause de l'erreur.
L'exemple suivant attend jusqu'à une seconde que la connexion soit fermée :
socket->disconnectFromHost();
if (socket->state()== QAbstractSocket::UnconnectedState
|| socket->waitForDisconnected(1000)) {
qDebug("Disconnected!");
}Si msecs vaut -1, cette fonction n'est soumise à aucun délai d'expiration.
Remarque : cette fonction peut échouer de manière aléatoire sous Windows. Envisagez d'utiliser la boucle d'événements et le signal ` disconnected()` si votre logiciel est destiné à fonctionner sous Windows.
Voir également disconnectFromHost() et close().
[override virtual] bool QAbstractSocket::waitForReadyRead(int msecs = 30000)
Réimplémentation de : QIODevice::waitForReadyRead(int msecs).
Cette fonction reste bloquée jusqu’à ce que de nouvelles données soient disponibles en lecture et que le signal readyRead() ait été émis. La fonction expire après msecs millisecondes ; le délai d’expiration par défaut est de 30000 millisecondes.
La fonction renvoie true si le signal readyRead() est émis et que de nouvelles données sont disponibles pour la lecture ; sinon, elle renvoie false (si une erreur s’est produite ou si l’opération a expiré).
Remarque : cette fonction peut échouer de manière aléatoire sous Windows. Envisagez d'utiliser la boucle d'événements et le signal ` readyRead()` si votre logiciel doit fonctionner sous Windows.
Voir également waitForBytesWritten().
[override virtual protected] qint64 QAbstractSocket::writeData(const char *data, qint64 size)
Réimplémentation de : QIODevice::writeData(const char *data, qint64 maxSize).
© 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.