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