QInputDevice Class

Die Klasse QInputDevice beschreibt ein Gerät, von dem eine QInputEvent ausgeht. Mehr...

Kopfzeile: #include <QInputDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Seit: Qt 6.0
Erbt: QObject
Geerbt von:

QPointingDevice

Öffentliche Typen

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

Öffentliche Funktionen

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

Signale

Statische öffentliche Mitglieder

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

Detaillierte Beschreibung

Jedes QInputEvent enthält einen QInputDevice-Zeiger, um den Zugriff auf gerätespezifische Eigenschaften wie Typ, Fähigkeiten und Sitz zu ermöglichen. Es liegt in der Verantwortung der Plattform oder der generischen Plug-ins, eine Instanz dieser Klasse für jedes verfügbare Eingabegerät über QWindowSystemInterface::registerInputDevice() zu ermitteln, zu erstellen und zu registrieren, bevor ein Eingabeereignis erzeugt wird, das sich auf dieses Gerät bezieht.

Anwendungen müssen diese Klasse nicht instanziieren, sondern können die Instanzen lesen, auf die QInputEvent::device() und QInputDevice::devices() verweisen.

Dokumentation der Mitgliedstypen

enum class QInputDevice::Capability
flags QInputDevice::Capabilities

Gibt an, welche Art von Informationen das Eingabegerät oder sein Treiber bereitstellen kann.

KonstanteWertBeschreibung
QInputDevice::Capability::None0Keine Informationen über die Fähigkeiten des Eingabegeräts verfügbar.
QInputDevice::Capability::Position0x0001Zeigt an, dass Positionsinformationen verfügbar sind, was bedeutet, dass die Funktionen der Familie position() in den Berührungspunkten gültige Punkte zurückgeben.
QInputDevice::Capability::Area0x0002Zeigt an, dass Informationen über den Berührungsbereich verfügbar sind, was bedeutet, dass QEventPoint::ellipseDiameters() in den Berührungspunkten gültige Werte zurückgibt.
QInputDevice::Capability::Pressure0x0004Zeigt an, dass Druckinformationen verfügbar sind, was bedeutet, dass QEventPoint::pressure() einen gültigen Wert zurückgibt.
QInputDevice::Capability::Velocity0x0008Zeigt an, dass Geschwindigkeitsinformationen verfügbar sind, was bedeutet, dass QEventPoint::velocity() einen gültigen Vektor zurückgibt.
QInputDevice::Capability::NormalizedPosition0x0020Zeigt an, dass die normalisierte Position verfügbar ist, was bedeutet, dass QEventPoint::globalPosition() einen gültigen Wert zurückgibt.
QInputDevice::Capability::MouseEmulation0x0040Zeigt an, dass das Gerät Mausereignisse synthetisiert.
QInputDevice::Capability::Scroll0x0100Zeigt an, dass das Gerät über eine Bildlauffunktion verfügt.
QInputDevice::Capability::PixelScroll (since Qt 6.2)0x0080Zeigt an, dass das Gerät (normalerweise ein touchpad) mit pixel precision scrollt.
QInputDevice::Capability::Hover0x0200Zeigt an, dass das Gerät über eine Hover-Funktion verfügt.
QInputDevice::Capability::Rotation0x0400Zeigt an, dass rotation Informationen verfügbar sind.
QInputDevice::Capability::XTilt0x0800Zeigt an, dass tilt Informationen für die X-Achse verfügbar sind.
QInputDevice::Capability::YTilt0x1000Zeigt an, dass tilt Informationen für die Y-Achse verfügbar sind.
QInputDevice::Capability::TangentialPressure0x2000Zeigt an, dass tangential pressure Informationen verfügbar sind.
QInputDevice::Capability::ZPosition0x4000Zeigt an, dass Positionsinformationen für die Z-axis verfügbar sind.
QInputDevice::Capability::All0x7FFFFFFF

Der Typ Capabilities ist ein Typedef für QFlags<Capability>. Er speichert eine ODER-Kombination von Capability-Werten.

enum class QInputDevice::DeviceType
flags QInputDevice::DeviceTypes

Diese Aufzählung stellt den Gerätetyp dar, der ein QPointerEvent erzeugt hat.

KonstanteWertBeschreibung
QInputDevice::DeviceType::Unknown0x0000Das Gerät kann nicht identifiziert werden.
QInputDevice::DeviceType::Mouse0x0001Eine Maus.
QInputDevice::DeviceType::TouchScreen0x0002Bei diesem Gerätetyp sind die Berührungsfläche und das Display integriert. Das bedeutet, dass die Oberfläche und das Display typischerweise die gleiche Größe haben, so dass eine direkte Beziehung zwischen den physischen Positionen der Berührungspunkte und den von QEventPoint gemeldeten Koordinaten besteht. Infolgedessen ermöglicht Qt dem Benutzer die direkte Interaktion mit mehreren QWidgets, QGraphicsItems oder Qt Quick Items zur gleichen Zeit.
QInputDevice::DeviceType::TouchPad0x0004Bei dieser Art von Geräten ist die Berührungsoberfläche vom Display getrennt. Es besteht keine direkte Beziehung zwischen der physischen Berührungsposition und den Bildschirmkoordinaten. Stattdessen werden sie relativ zur aktuellen Mausposition berechnet, und der Benutzer muss das Touchpad verwenden, um diesen Referenzpunkt zu verschieben. Im Gegensatz zu Touchscreens können Benutzer in Qt nur mit einem einzigen QWidget oder QGraphicsItem gleichzeitig interagieren.
QInputDevice::DeviceType::Stylus0x0010Ein stiftähnliches Gerät, das auf einem Grafiktablett, wie z. B. einem Wacom-Tablett, oder auf einem Touchscreen verwendet wird, der eine separate Stiftsensorik bietet.
QInputDevice::DeviceType::Airbrush0x0020Ein Eingabestift mit einem Daumenrad zur Einstellung von tangentialPressure.
QInputDevice::DeviceType::Puck0x0008Ein Gerät, das einer flachen Maus mit einem transparenten Kreis mit Fadenkreuz ähnelt.
QInputDevice::DeviceType::Keyboard0x1000Eine Tastatur.
QInputDevice::DeviceType::AllDevices0x7FFFFFFFJedes der oben genannten Geräte (wird als Standardfilterwert verwendet).

Der Typ DeviceTypes ist ein Typedef für QFlags<DeviceType>. Er speichert eine ODER-Kombination von DeviceType-Werten.

Dokumentation der Mitgliedsfunktionen

QInputDevice::QInputDevice(QObject *parent = nullptr)

Erzeugt eine neue Instanz eines ungültigen Eingabegeräts als Kind von parent.

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

Erzeugt eine neue Eingabegeräteinstanz. Die angegebene name ist normalerweise ein vom Hersteller zugewiesener Modellname, falls verfügbar, oder etwas anderes Identifizierbares; id ist eine plattformspezifische Nummer, die für jedes Gerät eindeutig ist (zum Beispiel die xinput ID auf X11); type identifiziert die Art des Geräts. Auf Fenstersystemen, die in der Lage sind, Eingaben von mehreren Benutzern oder Gruppen von Eingabegeräten gleichzeitig zu verarbeiten (wie Wayland oder X11), identifiziert seatName den Namen der Gruppe von Geräten, die zusammen verwendet werden. Handelt es sich bei dem Gerät um ein Kind- oder Slave-Gerät (zum Beispiel eine von mehreren Mäusen, die abwechselnd den "Kernzeiger" bewegen können), sollte das Master-Gerät als parent angegeben werden.

Das Plattform-Plugin erstellt, registriert und besitzt weiterhin jede Geräteinstanz; normalerweise sollte parent für Speicherverwaltungszwecke angegeben werden, auch wenn es keinen Master für ein bestimmtes Gerät gibt.

Standardmäßig sind capabilities() None.

QRect QInputDevice::availableVirtualGeometry() const

Gibt den Bereich innerhalb des virtual desktop zurück, auf den dieses Gerät zugreifen kann.

Ein TouchScreen Eingabegerät ist beispielsweise auf einen einzigen physischen Bildschirm fixiert und in der Regel so kalibriert, dass dieser Bereich mit QScreen::geometry() übereinstimmt, während ein Mouse wahrscheinlich auf alle Bildschirme des virtuellen Desktops zugreifen kann. Ein Wacom-Grafiktablett kann so konfiguriert werden, dass es auf alle Bildschirme zugreift oder nur auf den Bildschirm, auf dem der Benutzer bevorzugt Zeichnungen erstellt, oder auf das Fenster, in dem gezeichnet wird. Ein Stylus Gerät, das in einen Touchscreen integriert ist, kann physisch auf diesen Bildschirm beschränkt sein.

Wenn das zurückgegebene Rechteck null lautet, bedeutet dies, dass dieses Gerät auf den gesamten virtuellen Desktop zugreifen kann.

Hinweis: Getter-Funktion für die Eigenschaft availableVirtualGeometry.

QInputDevice::Capabilities QInputDevice::capabilities() const

Gibt die Fähigkeiten des Geräts zurück.

Hinweis: Getter-Funktion für die Eigenschaft capabilities.

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

Gibt eine Liste aller registrierten Eingabegeräte (Tastaturen und Zeigegeräte) zurück.

Hinweis: Die Liste der Geräte ist nicht immer auf allen Plattformen vollständig. Bislang sind die vollständigsten Informationen auf der X11-Plattform verfügbar, und zwar beim Start und als Reaktion auf Hot-Plugging. Die meisten anderen Plattformen sind nur in der Lage, generische Geräte verschiedener Typen zur Verfügung zu stellen, nachdem sie Ereignisse von ihnen empfangen haben; und die meisten Plattformen teilen Qt nicht mit, wenn ein Gerät eingesteckt ist oder wenn es zur Laufzeit ausgesteckt wird.

Hinweis: Die zurückgegebene Liste kann nicht verwendet werden, um neue Geräte hinzuzufügen. Um einen simulierten Touchscreen für einen Autotest hinzuzufügen, kann QTest::createTouchDevice() verwendet werden. Plattform-Plugins sollten QWindowSystemInterface::registerInputDevice() aufrufen, um Geräte hinzuzufügen, sobald sie entdeckt werden.

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

Gibt zurück, ob die Fähigkeiten des Geräts die angegebene capability umfassen.

QString QInputDevice::name() const

Gibt den Gerätenamen zurück.

Diese Zeichenkette kann leer sein. Er ist jedoch auf Systemen mit mehreren Eingabegeräten nützlich: Er kann verwendet werden, um zu unterscheiden, von welchem Gerät ein QPointerEvent stammt.

Hinweis: Getter-Funktion für die Eigenschaft name.

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

Gibt die Kern- oder Mastertastatur auf dem angegebenen Sitzplatz seatName zurück.

QString QInputDevice::seatName() const

Gibt den Sitzplatz zurück, dem das Gerät zugeordnet ist, falls bekannt; andernfalls leer.

Geräte, die gemeinsam von einem Benutzer verwendet werden sollen, können so konfiguriert werden, dass sie denselben Sitznamen haben. Dies ist bisher nur auf Wayland- und X11-Plattformen möglich.

Hinweis: Getter-Funktion für die Eigenschaft seatName.

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

Gibt eine Liste von Sitznamen für alle registrierten Eingabegeräte (Tastaturen und Zeigegeräte) zurück.

Diese Funktion wurde in Qt 6.3 eingeführt.

qint64 QInputDevice::systemId() const

Gibt die plattformspezifische System-ID zurück (z. B. xinput ID auf der X11-Plattform).

Von allen Plattformen wird erwartet, dass sie eine eindeutige System-ID für jedes Gerät bereitstellen.

Hinweis: Getter-Funktion für die Eigenschaft systemId.

QInputDevice::DeviceType QInputDevice::type() const

Gibt den Gerätetyp zurück.

Hinweis: Getter-Funktion für die Eigenschaft type.

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