Seite 1 von 2
Wie kann ich die Strg tast abfragen?
Verfasst: 21. Mai 2007 17:10
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?
Verfasst: 21. Mai 2007 18:09
von franzf
Suchst du Qt::Key_Control?
Verfasst: 21. Mai 2007 18:45
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.
Verfasst: 21. Mai 2007 20:26
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
...
}
Verfasst: 22. Mai 2007 11:26
von Nash
kannst du bitte kurz deinen Code erklären?
Verfasst: 22. Mai 2007 12:17
von upsala
Grundlagen? Boolsche Algebra?
Verfasst: 22. Mai 2007 14:48
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.
Verfasst: 23. Mai 2007 09:43
von Nash
@upsala
ist dir das Problem bekannt?
Verfasst: 23. Mai 2007 12:29
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...
Alt Taste muss zweimal gedrückt werden
Verfasst: 23. Mai 2007 14:28
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
Verfasst: 23. Mai 2007 15:08
von Nash
exakt, ich habe ein QMainWindow, wie könnte man das event weiterleiten?
so das es beim ersten drücken gleich ankommt.
Alt-Key
Verfasst: 23. Mai 2007 16:25
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
Verfasst: 24. Mai 2007 09:59
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.
Verfasst: 24. Mai 2007 12:19
von upsala
Wie wärs wenn du dich mal an gewisse Standards halten würdest. Du versuchst hier mit Gewalt jede Kleinigkeit umzubiegen.
Verfasst: 24. Mai 2007 14:06
von Nash
sorry aber auf die Alt taste muss ich bestehen, die ist nämlich standard in 3D Anwendungen.