Seite 1 von 1
[gelöst] QKeyEvent und QKeySequence?
Verfasst: 27. März 2009 17:11
von Whitefurrows
Hallo,
wie kann ich im keyPressEvent eine QKeySequence überpüfen, die nicht zu den StandardKey's gehört?
Nachfolgend ein Beispiel:
Code: Alles auswählen
void MyWidget::keyPressEvent(QKeyEvent* e)
{
if (e == QKeySequence::Copy)
// ...
else if (e == QKeySequence(Qt::CTRL + Qt::Key_J))
// ... wie kann ich diese QKeySequence prüfen?
}
Gruß
Whitefurrows
Verfasst: 27. März 2009 17:55
von -=Freaky=-
ich kann hier auch falschliegen, aber ich denke mir das so, dass das event eine einzelne Taste ist, und eben _keine_ sequenz von tasten(druecken).
fuer QKeySequences habe ich immer shortcuts benutzt ...
mfg,
julian
Verfasst: 28. März 2009 11:08
von Whitefurrows
Ja, wie das mit den Standard Shortcuts funktioniert ist mir klar, wie an meinem Beispiel zu sehen ist. Wie funktioniert es aber mit eigenen Shortcut's wie z.B. mit "CTRL+J" ? Wie kann ich diese kombination abfragen?
Gruß
Whitefurrows
Verfasst: 28. März 2009 11:28
von -=Freaky=-
sorry, war schlecht beschrieben ...
mit shortcuts meinte ich QShortcut ->
http://doc.trolltech.com/4.5/qshortcut.html
mfg,
julian
Re: QKeyEvent und QKeySequence?
Verfasst: 28. März 2009 11:37
von franzf
Whitefurrows hat geschrieben:Nachfolgend ein Beispiel:
Code: Alles auswählen
void MyWidget::keyPressEvent(QKeyEvent* e)
{
if (e == QKeySequence::Copy)
// ...
else if (e == QKeySequence(Qt::CTRL + Qt::Key_J))
// ... wie kann ich diese QKeySequence prüfen?
}
Das Problem an deinem Beispiel ist ja, dass operator== so definiert ist:
Code: Alles auswählen
bool operator== ( QKeyEvent * e, QKeySequence::StandardKey key )
also zum Vergleich ein StandardKey benötigt wird.
Aus der Doku zu QKeyEvent geht hervor, dass diese Klasse zwei Methoden anbietet, die für dich interessant sein sollten:
* int key () const
* Qt::KeyboardModifiers modifiers () const
Mit den Methoden solltest du prüfen können, ob CTRL als Modifier existiert, ebenso, ob J unter den Keys ist.
Verfasst: 30. März 2009 21:30
von Whitefurrows
Vielen Dank für eure Hilfe, jetzt funktioniert alles. Die Sache mit int key () const hatte ich im dem Beispiel vergessen, sollte so nicht sein. Das mit den Qt::KeyboardModifiers modifiers () const war dann der entscheidende Tipp!
Gruß
Whitefurrows