[gelöst] QKeyEvent und QKeySequence?

Alles rund um die Programmierung mit Qt
Antworten
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

[gelöst] QKeyEvent und QKeySequence?

Beitrag 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
Zuletzt geändert von Whitefurrows am 30. März 2009 21:30, insgesamt 1-mal geändert.
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag 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
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

sorry, war schlecht beschrieben ...
mit shortcuts meinte ich QShortcut -> http://doc.trolltech.com/4.5/qshortcut.html

mfg,
julian
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QKeyEvent und QKeySequence?

Beitrag 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.
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag 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
Antworten