Alles rund um die Programmierung mit Qt
Razoron
Beiträge: 19 Registriert: 12. Dezember 2010 18:14
Beitrag
von Razoron » 18. Dezember 2010 21:22
Hi,
gibt es eine einfache Möglichkeit in Qt den status einer Taste abzurufen?
Also in etwa
Oder muss ich doch alle events überladen und die Daten in nem Array speichern?
upsala
Beiträge: 3946 Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:
Beitrag
von upsala » 18. Dezember 2010 22:11
Nein, gibt es nicht, außerdem würde ich es in einem QSet abspeichern.
Razoron
Beiträge: 19 Registriert: 12. Dezember 2010 18:14
Beitrag
von Razoron » 20. Dezember 2010 09:36
Na gut, okay. Dann werde ich das wohl so speichern müssen. Auf eine platformabhängige Funktion steh ich nicht
.
Razoron
Beiträge: 19 Registriert: 12. Dezember 2010 18:14
Beitrag
von Razoron » 20. Dezember 2010 10:32
Okay, ich habs gelöst. War eigentlich einfach
.
Code: Alles auswählen
#ifndef ZKEYBOARD_H
#define ZKEYBOARD_H
#include <QKeyEvent>
#include <QSet>
class ZKeyboard
{
private:
QSet<qint32> keyboard;
public:
ZKeyboard();
~ZKeyboard();
void parseEvent(const QKeyEvent &event);
bool key(int keyId);
};
#endif // ZKEYBOARD_H
Code: Alles auswählen
#include "zkeyboard.h"
// Constructor & Destructor
ZKeyboard::ZKeyboard()
{
}
ZKeyboard::~ZKeyboard()
{
}
// Public methods
void ZKeyboard::parseEvent(const QKeyEvent &event)
{
switch(event.type())
{
case QEvent::KeyPress:
if(keyboard.find(event.key()) == keyboard.constEnd())
{
keyboard.insert(event.key());
}
break;
case QEvent::KeyRelease:
if(keyboard.find(event.key()) != keyboard.constEnd())
{
keyboard.remove(event.key());
}
break;
default:
break;
}
}
bool ZKeyboard::key(int keyId)
{
return keyboard.find(keyId) != keyboard.constEnd();
}
[/code]
Giesbert
Beiträge: 33 Registriert: 16. Oktober 2009 00:50
Wohnort: Hessdorf bei Erlangen
Kontaktdaten:
Beitrag
von Giesbert » 20. Dezember 2010 11:12
Und das ganze hängst du als event filter in die application ein?
Was ist mit Tasten die gedrückt waren, bevor die application getsartet war?
Das geht mit sicherheit für 95 % (wenn das lang is gut) ansonsten bekommst du auch net mit, wenn der focus auf eiuner anderen Applikationj liegt, eine taste gedrückt wird und der fikus zurück kommt.
Razoron
Beiträge: 19 Registriert: 12. Dezember 2010 18:14
Beitrag
von Razoron » 20. Dezember 2010 11:15
Man könnte es natürlich auch noch erweitern... Aber mir reicht das erstmal.