Qt: Fokus setzen - wie?

Qt Programmierung, QML, Qt-Plattformen
wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Qt: Fokus setzen - wie?

Beitrag von wellnestom » Do Jan 17, 2013 6:16 pm

Hallo,
ich habe in meinem Programm 2 Widgets (eigenständige, also keine childs) im Fullscreen auf 2 Bildschirmen.
In einem TimerEvent wird eine Variable überprüft. Wenn ihr Wert 0 ist soll der Fokus auf dem einen Widget sein, ist der Wert 1 soll das andere Widget den Fokus haben.
Hab mit

Code: Alles auswählen

this->setFocus();
this->hasFocus();
this->focusWidget();
rumgespielt. Hat aber nichts gebracht.
Auch das ändern von 'focusPolicy' im QtDesigner hat keine Änderung ergeben.
Wie hann ich einem Fenster (widget) sagen "So, jetzt bist du am dransten!"??

Gruß Tom

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Fokus setzen - wie?

Beitrag von nufan » Do Jan 17, 2013 6:27 pm

Bitte ein Archiv zum Spielen ^^

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Fokus setzen - wie?

Beitrag von wellnestom » Do Jan 17, 2013 8:04 pm

Die Datei ist zu groß. Die maximal erlaubte Dateigröße ist 256 KiB.
Naja, hab grad keine Lust die ganzen Grafiken zu entfernen und so... :?
Habs mal das ganze Projekt auf meinen Server hochgeladen.

thomasplohs.de/kitt/KITT-Dash.zip

In den Dateien:
fibi/fibil.cpp Zeile 394
und
fibi/fibir.cpp Zeile 655

soll die Anweisung "Bitte setz den Fokus auf dieses Widget" stehen.
Mit der Taste 'm' wird die überprüfte Variable auf 0 bzw 1 gesetzt. Also der Fokus gewechselt.

Gruß Tom

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Fokus setzen - wie?

Beitrag von nufan » Do Jan 17, 2013 8:16 pm

Ähm... ich krieg nur den Dialog zum Einstellen der Werte und ein schwarzes Fenster im Vollbildmodus ^^ Ich nehme mal an, dass das nicht so sein soll ^^

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Fokus setzen - wie?

Beitrag von wellnestom » Do Jan 17, 2013 8:25 pm

Musst das im Debug modus und ohne Shadow-Build machen sonst findet er die Pfade zu den Grafiken nicht. (oder du kopierst die unterordner dahin wo's bei die erstellt wird)
Es sollten 3 Fenster sein. Hab das mit der Automatischen Bildschirmauswahl noch nicht perfektioniert. Kann sein das ein Fenster auf deinem nicht vorhandenem zweiten Bildschirm ist. Ändere einfach in der main.cpp die Zeile 193

Code: Alles auswählen

fibilinks.setschirm(schirm2.posx,schirm2.posy);
in

Code: Alles auswählen

fibilinks.setschirm(100,200);
um.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

OFFTOPIC

Beitrag von Xin » Do Jan 17, 2013 8:32 pm

wellnestom hat geschrieben:thomasplohs.de
SEHR SEHR GEIL!

Als Kind habe ich Knight Rider auch geliebt. ^^
Ich würde mir zwar lieber einen Airwolf bauen, aber hier denke ich tatsächlich, dass ein KITT realistischer ist.
Bau keinen Turbo Boost ein, man sah zwar immer, wie das Auto abhebt, aber selten, wie es landet und das hatte Gründe ;-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Fokus setzen - wie?

Beitrag von wellnestom » Do Jan 17, 2013 8:38 pm

Xin hat geschrieben:SEHR SEHR GEIL!
Danke! :D
Dafür eben die Amaturenbrett-Software für die vielen TFT's.
Die Elektronik selbst bauen kann ich nicht, und fertig kaufen kostet gleich mal 1400,- $
Das kann ich mit Qt und ein paar TFT's billiger und vielfältiger.

Gruß

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Fokus setzen - wie?

Beitrag von nufan » Do Jan 17, 2013 9:04 pm

Soweit ich sehe kapseln die beiden Widgets jeweils eine QGraphicsScene. Was soll das Ziel vom Wechsel des Fokuses sein? Willst du Tastatureingaben in einem anderen Fenster abfragen? Es nur in den Vordergrund holen?

wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Re: Qt: Fokus setzen - wie?

Beitrag von wellnestom » Do Jan 17, 2013 9:27 pm

Richtig. Es werden Tastatureingaben abgefragt mit denen ich die Scene 'justieren' kann. Dafür brauch ich aber immer das Fenster das ich einstellen will im Vordergrund.
  • wasd - hoch, runter, links, rechts
    qe - links - rechts rotieren
    rf - zoomen
    F11 - toggle Fullscreen
    F4 - Tageskilometerzähler zurücksetzen
    Numpad + - zwischen den verschiedenen 'Tachos' (Opel, Pontiac orginal, KITT...) umschalten.
    x - Showmode
Die TFT's werden sicher nicht genau die Größe haben oder 'gerade' eingebaut werden können. Deswegen will ich die Szenen seperat einstellen können.
Auch Tastenbefehle für Tageskilometerzähler zurücksetzen usw. sollen abgefangen werden.

Das ist alles noch der Anfang. Ich will noch viele weitere Funktionen einbauen.......

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: Fokus setzen - wie?

Beitrag von nufan » Fr Jan 18, 2013 8:48 pm

Sorry für meine späte Antwort.
Ich hab jetzt endlich genau verstanden um was es geht. Was du suchst sind folgende beiden Aufrufe:

Code: Alles auswählen

  qApp->setActiveWindow( this );
  raise();
Übrigens macht dein Programm beim Drücken von Alt-F4 Probleme und öffnet das Fenster immer wieder neu ^^

Antworten