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: |
Ö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
void | availableVirtualGeometryChanged(QRect area) |
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.
Konstante | Wert | Beschreibung |
---|---|---|
QInputDevice::Capability::None | 0 | Keine Informationen über die Fähigkeiten des Eingabegeräts verfügbar. |
QInputDevice::Capability::Position | 0x0001 | Zeigt 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::Area | 0x0002 | Zeigt 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::Pressure | 0x0004 | Zeigt an, dass Druckinformationen verfügbar sind, was bedeutet, dass QEventPoint::pressure() einen gültigen Wert zurückgibt. |
QInputDevice::Capability::Velocity | 0x0008 | Zeigt an, dass Geschwindigkeitsinformationen verfügbar sind, was bedeutet, dass QEventPoint::velocity() einen gültigen Vektor zurückgibt. |
QInputDevice::Capability::NormalizedPosition | 0x0020 | Zeigt an, dass die normalisierte Position verfügbar ist, was bedeutet, dass QEventPoint::globalPosition() einen gültigen Wert zurückgibt. |
QInputDevice::Capability::MouseEmulation | 0x0040 | Zeigt an, dass das Gerät Mausereignisse synthetisiert. |
QInputDevice::Capability::Scroll | 0x0100 | Zeigt an, dass das Gerät über eine Bildlauffunktion verfügt. |
QInputDevice::Capability::PixelScroll (since Qt 6.2) | 0x0080 | Zeigt an, dass das Gerät (normalerweise ein touchpad) mit pixel precision scrollt. |
QInputDevice::Capability::Hover | 0x0200 | Zeigt an, dass das Gerät über eine Hover-Funktion verfügt. |
QInputDevice::Capability::Rotation | 0x0400 | Zeigt an, dass rotation Informationen verfügbar sind. |
QInputDevice::Capability::XTilt | 0x0800 | Zeigt an, dass tilt Informationen für die X-Achse verfügbar sind. |
QInputDevice::Capability::YTilt | 0x1000 | Zeigt an, dass tilt Informationen für die Y-Achse verfügbar sind. |
QInputDevice::Capability::TangentialPressure | 0x2000 | Zeigt an, dass tangential pressure Informationen verfügbar sind. |
QInputDevice::Capability::ZPosition | 0x4000 | Zeigt an, dass Positionsinformationen für die Z-axis verfügbar sind. |
QInputDevice::Capability::All | 0x7FFFFFFF |
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.
Konstante | Wert | Beschreibung |
---|---|---|
QInputDevice::DeviceType::Unknown | 0x0000 | Das Gerät kann nicht identifiziert werden. |
QInputDevice::DeviceType::Mouse | 0x0001 | Eine Maus. |
QInputDevice::DeviceType::TouchScreen | 0x0002 | Bei 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::TouchPad | 0x0004 | Bei 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::Stylus | 0x0010 | Ein 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::Airbrush | 0x0020 | Ein Eingabestift mit einem Daumenrad zur Einstellung von tangentialPressure. |
QInputDevice::DeviceType::Puck | 0x0008 | Ein Gerät, das einer flachen Maus mit einem transparenten Kreis mit Fadenkreuz ähnelt. |
QInputDevice::DeviceType::Keyboard | 0x1000 | Eine Tastatur. |
QInputDevice::DeviceType::AllDevices | 0x7FFFFFFF | Jedes 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.