Fokus auf ein QLineEdit setzen
-
Hallo,
ich ahbe in einem Widget 2 QLineEdits von denen der Focus + Cursor immer in dem ersten stehen. Bei bestimmter Eingabe möchste ich aber, dass der Focus und damit auch der Cursor in das zweite feld springt. Allerdings klappt das irgendwie nicht.
Ich habe zwar diverse Methoden gefunden, die scheinen aber alle nicht so richtig zu funktionieren. habe jetzt folgenden Code:
else if (this->Index() == 1) { edit->setEnabled(true); edit->activateWindow(); edit->setFocus(); dit->setCursorPosition(0); break; }
So wie ich die Dikumentation verstanden habe, muss es mit einer dieser Methoden möglich sein, den Fokus und den Cursor in ein bestimmtes Feld zu setzen.
Kann mir da jemand helfen?
Mfg
-
setFocus waere schoen korrekt.
Warum es nicht geht laesst sich Deiner minimalistischen Ausfuehrung nicht entnehmen.
-
Danke für die Antwort.
Leider lässt sich zu dieser Ausführung nicht viel mehr hinzufügen. Ich hab ein QWidget in welches 2 QLineEdits eingebettet sind. Durch ein bestimmtes Ereignis soll der Cursor in jeweils eins der beiden Felder gesetzt werden. Dies soll eigentlich durch unten stehenden Code geschehen.
Allerdings bleibt der Cursor immer in dem ersten der beiden Felder und wechselt nicht, auch wenn die setFocus-Methode aufgerufen wird.
-
Welchen Sinn macht das break im Code?
-
Das ist das break einer CASE Anweisung. Zum besseren Verständnis hier mal der für mich relevante, gesamte Code-Ausschnitt:
case CDU_LSK_LEFT_3: if (this->currentIndex() == 0) {break;} else if (this->currentIndex() == 1) { comm1edit->setFocus(); comm1edit->setCursorPosition(0); break; } case CDU_LSK_LEFT_4: if (this->currentIndex() == 0) {break;} else if (this->currentIndex() == 1) { comm2edit->setFocus(); comm2edit->setCursorPosition(0); break; }
CDU_LSK_LEFT ist dabei ein bestimmter Enum-Wert auf den reagiert Werden soll. currentIndex() bezeichnet ein QWidget dass gerade angezeigt wird (mehrere QWidgets sind in ein QStackedWidget eingebettet).
Ich muss dazu sagen, dass ich noch nicht so viel Erfahrung mit C++ und Qt habe, um den Fehler jetzt auf die schnelle alleine zu finden.
MfG
comm1/comm2edit sind die beiden QLineEdit Felder. Wie gesagt, sobald das übergeordnete Widget aktiviert ist, ist der Cursor von Beginn an im ersten Feld (comm1edit). Das zweite lässt sich nicht aktivieren.
-
und du kannst im debugger nochvollziehen, dass der "if (this->currentIndex() == 1)"-zweig auch ausgefuehrt wird und das "comm2edit->setFocus()" keine auswirkungen auf den focus hat?