Sur cette page

QInputDevice Class

La classe QInputDevice décrit un périphérique à l'origine d'une entrée « QInputEvent ». En savoir plus...

En-tête : #include <QInputDevice>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Depuis : Qt 6.0
Hérite de : QObject
Hérité par :

QPointingDevice

Types publics

flags Capabilities
enum class Capability { None, Position, Area, Pressure, Velocity, …, All }
enum class DeviceType { Unknown, Mouse, TouchScreen, TouchPad, Stylus, …, AllDevices }
flags DeviceTypes

Propriétés

Fonctions publiques

QInputDevice(QObject *parent = nullptr)
QInputDevice(const QString &name, qint64 id, QInputDevice::DeviceType type, const QString &seatName = QString(), QObject *parent = nullptr)
QRect availableVirtualGeometry() const
QInputDevice::Capabilities capabilities() const
bool hasCapability(QInputDevice::Capability capability) const
QString name() const
QString seatName() const
qint64 systemId() const
QInputDevice::DeviceType type() const

Signaux

void availableVirtualGeometryChanged(QRect area)
void capabilitiesChanged(QInputDevice::Capabilities capabilities)

Membres publics statiques

QList<const QInputDevice *> devices()
const QInputDevice *primaryKeyboard(const QString &seatName = QString())
(since 6.3) QStringList seatNames()

Fonctions protégées

QInputDevice(const QInputDevice &)
QInputDevice(QInputDevice &&)
QInputDevice &operator=(QInputDevice &&)
QInputDevice &operator=(const QInputDevice &)

Description détaillée

Chaque classe ` QInputEvent ` contient un pointeur `QInputDevice` permettant d’accéder aux propriétés spécifiques au périphérique, telles que le type, les capacités et le siège. Il incombe à la plate-forme ou aux plug-ins génériques de détecter, créer et enregistrer une instance de cette classe correspondant à chaque périphérique d’entrée disponible, via `QWindowSystemInterface::registerInputDevice()`, avant de générer tout événement d’entrée se rapportant à ce périphérique.

Les applications n’ont pas besoin d’instancier cette classe, mais peuvent lire les instances pointées par les fonctions ` QInputEvent::device()` et ` QInputDevice::devices()`.

Documentation sur les types membres

enum class QInputDevice::Capability
flags QInputDevice::Capabilities

Indique le type d'informations que le périphérique d'entrée ou son pilote peut fournir.

ConstanteValeurDescription
QInputDevice::Capability::None0Aucune information disponible sur les capacités du périphérique d'entrée.
QInputDevice::Capability::Position0x0001Indique que des informations de position sont disponibles, ce qui signifie que la famille de fonctions position() dans les points de contact renvoie des points valides.
QInputDevice::Capability::Area0x0002Indique que les informations relatives à la surface tactile sont disponibles, ce qui signifie que la fonction ` QEventPoint::ellipseDiameters()` renvoie des valeurs valides concernant les points de contact.
QInputDevice::Capability::Pressure0x0004Indique que les informations de pression sont disponibles, ce qui signifie que la fonction ` QEventPoint::pressure()` renvoie une valeur valide.
QInputDevice::Capability::Velocity0x0008Indique que les informations de vitesse sont disponibles, ce qui signifie que la fonction ` QEventPoint::velocity()` renvoie un vecteur valide.
QInputDevice::Capability::NormalizedPosition0x0020Indique que la position normalisée est disponible, ce qui signifie que la fonction QEventPoint::normalizedPosition() renvoie une valeur valide.
QInputDevice::Capability::MouseEmulation0x0040Indique que le périphérique synthétise des événements de souris.
QInputDevice::Capability::Scroll0x0100Indique que le périphérique dispose d’une fonctionnalité de défilement.
QInputDevice::Capability::PixelScroll (since Qt 6.2)0x0080Indique que le périphérique (généralement un « touchpad ») défile à l'aide de « pixel precision ».
QInputDevice::Capability::Hover0x0200Indique que le périphérique dispose d’une fonctionnalité de survol.
QInputDevice::Capability::Rotation0x0400Indique que des informations de type « rotation » sont disponibles.
QInputDevice::Capability::XTilt0x0800Indique que des informations d’ tilt sont disponibles pour l’axe X.
QInputDevice::Capability::YTilt0x1000Indique que des informations de type « tilt » sont disponibles pour l’axe Y.
QInputDevice::Capability::TangentialPressure0x2000Indique que des informations d'tangential pressure sont disponibles.
QInputDevice::Capability::ZPosition0x4000Indique que des informations de position sont disponibles pour l’ Z-axis.
QInputDevice::Capability::All0x7FFFFFFF 

Le type « Capabilities » est une définition de type (typedef) pour QFlags<Capability>. Il stocke une combinaison OR de valeurs Capability.

enum class QInputDevice::DeviceType
flags QInputDevice::DeviceTypes

Cette énumération représente le type de périphérique à l'origine d'une erreur de type « QPointerEvent ».

ConstanteValeurDescription
QInputDevice::DeviceType::Unknown0x0000Le périphérique ne peut pas être identifié.
QInputDevice::DeviceType::Mouse0x0001Une souris.
QInputDevice::DeviceType::TouchScreen0x0002Dans ce type de périphérique, la surface tactile et l'écran sont intégrés. Cela signifie que la surface et l’écran ont généralement la même taille, de sorte qu’il existe une relation directe entre les positions physiques des points de contact et les coordonnées renvoyées par la fonction ` QEventPoint`. Par conséquent, Qt permet à l’utilisateur d’interagir directement avec plusieurs `QWidgets`, `QGraphicsItems` ou éléments ` Qt Quick ` simultanément.
QInputDevice::DeviceType::TouchPad0x0004Sur ce type d’appareil, la surface tactile est distincte de l’écran. Il n’existe pas de relation directe entre l’emplacement physique du toucher et les coordonnées à l’écran. Celles-ci sont calculées par rapport à la position actuelle de la souris, et l’utilisateur doit utiliser le pavé tactile pour déplacer ce point de référence. Contrairement aux écrans tactiles, Qt permet aux utilisateurs d’interagir avec un seul QWidget ou QGraphicsItem à la fois.
QInputDevice::DeviceType::Stylus0x0010Dispositif de type stylet utilisé sur une tablette graphique, telle qu’une tablette Wacom, ou sur un écran tactile doté d’une fonction de détection de stylet distincte.
QInputDevice::DeviceType::Airbrush0x0020Un stylet muni d’une molette permettant de régler l’ tangentialPressure.
QInputDevice::DeviceType::Puck0x0008Un périphérique similaire à une souris plate, doté d’un cercle transparent avec un réticule.
QInputDevice::DeviceType::Keyboard0x1000Un clavier.
QInputDevice::DeviceType::AllDevices0x7FFFFFFFL’un des éléments ci-dessus (utilisé comme valeur de filtre par défaut).

Le type DeviceTypes est une définition de type (typedef) pour QFlags<DeviceType>. Il stocke une combinaison OR de valeurs DeviceType.

Documentation de la propriété

[read-only] availableVirtualGeometry : QRect

Cette propriété définit la zone du bureau virtuel à laquelle cet appareil peut accéder.

Par exemple, un périphérique d’entrée de type « TouchScreen » est fixé sur un seul écran physique et généralement calibré de manière à ce que cette zone corresponde à QScreen::geometry(), tandis qu’un périphérique de type « Mouse » est généralement capable d’accéder à tous les écrans du bureau virtuel.

Par ailleurs, une tablette graphique Wacom peut être configurée de manière à être mappée sur tous les écrans, ou uniquement sur l’écran sur lequel l’utilisateur préfère créer ses dessins, ou encore uniquement sur la fenêtre dans laquelle le dessin est réalisé.

Un périphérique Stylus intégré à un écran tactile peut être physiquement limité à cet écran.

Si le rectangle renvoyé est de type « null », cela signifie que ce périphérique peut accéder à l’ensemble du bureau virtuel.

Fonctions d'accès :

QRect availableVirtualGeometry() const

Signal de notification :

void availableVirtualGeometryChanged(QRect area)

[read-only] capabilities : Capabilities

Cette propriété contient les capacités de l'appareil.

Fonctions d'accès :

QInputDevice::Capabilities capabilities() const

Signal de notification :

void capabilitiesChanged(QInputDevice::Capabilities capabilities)

[read-only] name : const QString

Cette propriété contient le nom de l'appareil.

Fonctions d'accès :

QString name() const

[read-only] seatName : const QString

Cette propriété contient le siège associé à l'appareil.

Fonctions d'accès :

QString seatName() const

[read-only] systemId : const qint64

Cette propriété contient l'identifiant système propre à la plateforme.

Fonctions d'accès :

qint64 systemId() const

[read-only] type : const DeviceType

Cette propriété contient le type d'appareil

Fonctions d'accès :

QInputDevice::DeviceType type() const

Documentation sur les fonctions membres

QInputDevice::QInputDevice(QObject *parent = nullptr)

Crée une nouvelle instance de périphérique d'entrée non valide en tant qu'enfant de parent.

QInputDevice::QInputDevice(const QString &name, qint64 id, QInputDevice::DeviceType type, const QString &seatName = QString(), QObject *parent = nullptr)

Crée une nouvelle instance de périphérique d’entrée. L’ name fournie correspond généralement au nom de modèle attribué par le fabricant, s’il est disponible, ou à tout autre identifiant ; id est un numéro spécifique à la plate-forme qui sera unique pour chaque périphérique (par exemple, l’ID xinput sous X11) ; type identifie le type de périphérique. Sur les systèmes de fenêtrage capables de gérer simultanément les entrées provenant de plusieurs utilisateurs ou de plusieurs ensembles de périphériques d’entrée (tels que Wayland ou X11), seatName identifie le nom de l’ensemble de périphériques qui seront utilisés conjointement. Si le périphérique est un périphérique enfant ou esclave (par exemple, l’une des nombreuses souris pouvant déplacer à tour de rôle le « pointeur principal »), le périphérique maître doit être spécifié comme « parent ».

Le plugin de plateforme crée, enregistre et conserve la propriété de chaque instance de périphérique ; en règle générale, il convient de spécifier parent à des fins de gestion de la mémoire, même s’il n’y a pas de périphérique maître pour un périphérique donné.

Par défaut, les fonctions ` capabilities()` sont définies comme suit : ` None`.

[protected delete] QInputDevice::QInputDevice(const QInputDevice &)

Copie et construit une instance de ` QInputDevice`. Cette fonction est supprimée.

[protected delete] QInputDevice::QInputDevice(QInputDevice &&)

Crée par « move » une instance de ` QInputDevice`. Cette fonction est supprimée.

QInputDevice::Capabilities QInputDevice::capabilities() const

Renvoie les capacités de l'appareil.

Remarque : fonctiongetter pour la propriété capabilities.

[static] QList<const QInputDevice *> QInputDevice::devices()

Renvoie une liste de tous les périphériques d'entrée enregistrés (claviers et dispositifs de pointage).

Remarque : la liste des périphériques n'est pas toujours exhaustive sur toutes les plateformes. À ce jour, c’est sur la plateforme Linux que les informations sont les plus complètes, tant au démarrage qu’en réponse à un branchement à chaud. La plupart des autres plateformes ne sont capables de fournir que des périphériques génériques de différents types, et ce uniquement après avoir reçu des événements de leur part ; de plus, la plupart des plateformes n’informent pas Qt lorsqu’un périphérique est branché ou débranché en cours d’exécution.

Remarque : la liste renvoyée ne peut pas être utilisée pour ajouter de nouveaux périphériques. Pour ajouter un écran tactile simulé en vue d’un autotest, on peut utiliser la fonction ` QTest::createTouchDevice()`. Les plugins de plate-forme doivent appeler `QWindowSystemInterface::registerInputDevice()` pour ajouter les périphériques au fur et à mesure qu’ils sont détectés.

bool QInputDevice::hasCapability(QInputDevice::Capability capability) const

Indique si les capacités de l'appareil incluent l'capability.

QString QInputDevice::name() const

Renvoie le nom du périphérique.

Cette chaîne peut être vide. Elle est toutefois utile sur les systèmes disposant de plusieurs périphériques d'entrée : elle permet de déterminer de quel périphérique provient une « QPointerEvent ».

Remarque : fonctiongetter pour la propriété « name ».

[static] const QInputDevice *QInputDevice::primaryKeyboard(const QString &seatName = QString())

Renvoie le clavier principal ou maître associé au siège indiqué seatName.

QString QInputDevice::seatName() const

Renvoie le siège auquel le périphérique est associé, s'il est connu ; sinon, renvoie une chaîne vide.

Les périphériques destinés à être utilisés conjointement par un même utilisateur peuvent être configurés pour porter le même nom de siège. À ce jour, cela n’est possible que sur les plateformes Wayland et X11.

Remarque : fonctionde récupération pour la propriété seatName.

[static, since 6.3] QStringList QInputDevice::seatNames()

Renvoie une liste des noms de sièges pour tous les périphériques d'entrée enregistrés (claviers et périphériques de pointage).

Cette fonction a été introduite dans Qt 6.3.

qint64 QInputDevice::systemId() const

Renvoie l'identifiant système spécifique à la plateforme (par exemple, l'identifiant xinput sur la plateforme X11).

Toutes les plateformes sont censées fournir un identifiant système unique pour chaque périphérique.

Remarque : fonctionde lecture (getter ) pour la propriété systemId.

QInputDevice::DeviceType QInputDevice::type() const

Renvoie le type de périphérique.

Remarque : fonctiongetter pour la propriété « type ».

[protected delete] QInputDevice &QInputDevice::operator=(QInputDevice &&)

La commande « Move » affecte « other » à cette instance de « QInputDevice ». Cette fonction est supprimée.

[protected delete] QInputDevice &QInputDevice::operator=(const QInputDevice &)

Copie et attribue la classe « other » à cette instance « QInputDevice ». Cette fonction est supprimée.

© 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.