Hallöle,
da meint man man hätte sein Projekt erfolgreich nach Qt4 portiert, aber dann tauchen doch noch nicht funktionierende Funktionen auf.
Gegeben ist ein QDialog mit ein paar Buttons (btnNewFile, btnNewFolder, btnDelete, usw.), sowie einem QSplitter, der 2 QTreeWidget beherbergt. Unter Qt3 habe ich nach einem Klick auf einem der Buttons einfach geprüft welche der Listviews den Focus hatte (lvFiles->hasFocus()) und wußte so, wo ich den neuen Eintrag machen mußte.
Unter Qt4 funktioniert das nicht mehr, denn durch den Klick bekommt der Button den Focus. Ich hab jetzt schon einiges probiert, aber selbst ein connect(lvFiles, SIGNAL( lostFocus() ), this, SLOT( OnLostFocus() ) ) bleibt ohne Reaktion, obwohl das in einem anderen Dialog mit QLineEdits funktioniert.
Hatte jemand schon ein ähnliches Problem oder muß ich jetzt wirklich ein Beispielprojekt schreiben und an die Trolls schicken?
[gelöst][Qt4] Focus Probleme nach Umstellung von Qt3
[gelöst][Qt4] Focus Probleme nach Umstellung von Qt3
Zuletzt geändert von macman am 13. September 2005 13:00, insgesamt 1-mal geändert.
Re: [Qt4] Focus Probleme nach Umstellung von Qt3
Ich hab jetzt eine Lösung gefunden, man kommt nicht umhin das Widget, in diesem Fall ein QTreeWidget, zu überschreiben. Erst habe ich versucht die neue Klasse mit einer weiteren Membervariablen zu bestücken, die per focusInEvent und focusOutEvent gesetzt wird. Dann hätte ich die einfach nur abfragen müssen, aber das focusOutEvent kommt natürlich bevor man irgendwas abfragen kann.
Jetzt wird bei einem focusInEvent ein Signal (void getFocus(myWidget*)) gesendet und im darüber liegenden Dialog wird die entsprechende Connection gesetzt. Mein Dialog hat jetzt also eine Variable m_pCurrentView, in der das aktuelle TreeWidget gespeichert wird. Bei Klick auf einem Button vergleiche ich es nur mit meinen TreeWidgets und weiß so, welches zuletzt den Focus hatte.
Eigentlich fällt mir nur ein Wort dazu ein, Gefrickel
Hätte es jemand anders gemacht?
Jetzt wird bei einem focusInEvent ein Signal (void getFocus(myWidget*)) gesendet und im darüber liegenden Dialog wird die entsprechende Connection gesetzt. Mein Dialog hat jetzt also eine Variable m_pCurrentView, in der das aktuelle TreeWidget gespeichert wird. Bei Klick auf einem Button vergleiche ich es nur mit meinen TreeWidgets und weiß so, welches zuletzt den Focus hatte.
Eigentlich fällt mir nur ein Wort dazu ein, Gefrickel
Re: [Qt4] Focus Probleme nach Umstellung von Qt3
Und noch ein Eigenkommentar 
Mit einem setFocusPolicy(Qt::TabFocus) auf alle Buttons, bekomme ich das Verhalten wie unter Qt3 zurück. Die Trolls haben das Verhalten mehr an Windows angepasst, um konsistenter zu Windows zu sein, auch wenn es eines der bescheuertesten Verhalten ist, was ich mir vorstellen kann. Aber das steht auf einem anderen Blatt.macman hat geschrieben:Eigentlich fällt mir nur ein Wort dazu ein, GefrickelHätte es jemand anders gemacht?