Wie kann ich die Strg tast abfragen?

Verschiedenes zu Qt
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Wie kann ich die Strg tast abfragen?

Beitrag von Nash »

zur Zeit überprüfe ich so ob eine Taste gedrück worden ist.

Code: Alles auswählen

void 3DView::keyPressEvent(QKeyEvent* evt)
{
	
	if(evt->key()==Qt::Key_Alt)
	{
		m_altKey = true;
	}
aber anscheinend gibt es keine Strg Taste, oder Ctrl, wo ist die denn?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Suchst du Qt::Key_Control?
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

exakt danke.

btw:
vielleicht kannst du mir bei folgendem Problem auch noch weiterhelfen?

ich programmiere gerade einen editor, und bei verschiedenen Tastenkombinationen soll sich meine Camera verschieden bewegen(zoom, strafe usw..)

meine Abfragen sehen momentan so hier aus:

Code: Alles auswählen

if(mouseMiddleBtn && !m_altKey && !m_strgKey )
	{
...
}
if(mouseMiddleBtn && m_altKey && !m_strgKey)
	{
...
}
if(mouseMiddleBtn && m_altKey && m_strgKey )
	{
...
}
die Variablen mouseMiddleBtn, altKey, strgKey sind boolsche Variablen die Wahr sind, wenn die entsprechenen tasten gedrück werden.

funktioniert relativ gut, aber gibt es noch eine bessere Möglichkeit dafür?

und noch eine kurze Frage:
Ist es normal das das mouseMoveEvent Zwei mal aufgerufen wird?
Ist bei mir jedenfalls so, wird immer 2x aufgerufen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das Mouse-Move-Event wird bei jeder Bewegung aufgerufen...

Code: Alles auswählen

switch ( ((mouseMiddleBtn&1)<<2) | ((m_altKey&1)<<1) | (m_strgKey&1)) {
  case 0: //Nix gedrückt
  ...
  case 7: //Alles gedrückt
  ...
}

Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

kannst du bitte kurz deinen Code erklären?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Grundlagen? Boolsche Algebra?
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

okay jetzt hab ich es verstanden, du addierst die einzelnen werte zusammen je nachmden was rauskommt, sind diese und jene Tasten gedrückt.

ich hab noch folgendes Qt Problem:

mit der Mittleren maustaste kann ich mich in der Szene umherbewegen
wenn ich dazu dann Alt drücke, kann ich dann um die Szene rotieren.

jedoch muss ich immer 2 mal "Alt" drücken, das ich dann in diese Modus wechseln kann.

Ich rede hier von der Linken Alt taste.

ich glaube das hat damit was zu tun, das man mit Alt auch das File Menü steuern kann.
weiß jemand wie man dieses Problem lösen kann?
Wie ich momentan die Alt taste abfrage steht ganz oben.
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

@upsala
ist dir das Problem bekannt?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

1. Sind noch andere hier um Fragen zu beantworten.
2. Nein
3. Würde ich daran denken, daß die Alt-Taste des öfteren noch für andere Funktionen benutzt wird. [Alt-F4] [Alt+MouseButton] usw...
neuschi
Beiträge: 78
Registriert: 23. Mai 2007 10:59

Alt Taste muss zweimal gedrückt werden

Beitrag von neuschi »

Dass du die Alt-Taste zweimal drücken muss liegt mit hoher Wahrscheinlichkeit daran, dass du ein QMainWindow hast.
In diesem wird mit der "Alt" Taste das Menü aufgerufen und das Event dort "verschluckt".
Erst beim zweiten Drücken (wenn das Menü schon aktiv ist), kommt das Event bei dir an.

Gruss,

Ralf
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

exakt, ich habe ein QMainWindow, wie könnte man das event weiterleiten?
so das es beim ersten drücken gleich ankommt.
neuschi
Beiträge: 78
Registriert: 23. Mai 2007 10:59

Alt-Key

Beitrag von neuschi »

Nash hat geschrieben:exakt, ich habe ein QMainWindow, wie könnte man das event weiterleiten?
so das es beim ersten drücken gleich ankommt.
Ich würde es lassen, da der durchschnittliche User erwarten würde, dass "Alt" das Menü aktiviert...
Aber es gibt natürlich Möglichkeiten: installiere einen Eventfilter auf deinem Mainwindow und fange dort die "Alt"-Taste ab....
Ich würde aber wirklich eine andere Taste verwenden....

\Ralf
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

jo damit gehts, aber vom design konzept ist das vielleicht nicht so optimal, das man die Klassen ja am liebsten schön seperat abtrennen will.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wie wärs wenn du dich mal an gewisse Standards halten würdest. Du versuchst hier mit Gewalt jede Kleinigkeit umzubiegen.
Nash
Beiträge: 118
Registriert: 27. April 2007 14:49

Beitrag von Nash »

sorry aber auf die Alt taste muss ich bestehen, die ist nämlich standard in 3D Anwendungen.
Antworten