[gelöst]Abfangen von Mouse-Klicks auf deaktivierte Buttons

Alles rund um die Programmierung mit Qt
Antworten
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

[gelöst]Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von Tilman Räger »

Hallo,

ich habe mal wieder ein Problem(chen).

In einem Widget befinden sich als Child-Objekte 2 Pushbuttons sowie eine Checkbox. Dieses Widgets befindet sich in einer Liste zur Anzeige mehrere gleichartiger Objekte, jeweils eines dieser Objekte soll zu einem Zeitpunkt ausgewählt sein.
Bei den nicht ausgewählten werden die 3 Child-Objekte via setEnabled(false) deaktiviert, das ganze Widget wird als hervorgehoben dargestellt, das Ausgewählte wird ein als eingedrücktes Objekt mit den aktiven Buttons dargestellt. Soweit ganz einfach.

Das Problem kommt bei der Aktivierung. Es soll durch einen Mausklick auf den Bereich des zu aktivierenden Widgets erfolgen, funktioniert auch, solange ich ausserhalb des Bereichs der 3 Childobjekte klicke. Ich war eigentlich davon ausgegangen, das beim Deaktivierten Button (bzw. Checkbox etc.) Mouse-Events einfach an den Parent weitergeleitet werden und habe versucht, die MousePress-Events abzufangen, was jedoch nur beim Klicken in den Restbereich des Widgets funktioniert.

Wie kann ich Klicks auf diese Buttons abfangen? Gibt es eine einfache möglichkeit oder muss ich mir dazu eine extra Button-Klasse schreiben?

Gruss
Tilman Räger
Zuletzt geändert von Tilman Räger am 6. November 2012 16:40, insgesamt 1-mal geändert.
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von veeman »

Eine Möglichkeit wäre installEventFilter auf die Buttons anzuwenden und die Klicks abzufangen wenn die Buttons deaktiviert sind.

Mfg veeman
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Re: Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von Troll.Soft »

moin,
Du verwirrst Deine Benutzter, wenn Du Klicks auf deaktivierte Buttons erlaubst. Ein Button, der angeklickt werden darf, solte auch anklickbar aussehen. Pack vielleicht um die aktivierte Gruppe eine Aktivrahmen und um die anderen einen Ruherahmen.
tschüß
Troll.Soft
dazedly
Beiträge: 197
Registriert: 3. Oktober 2010 15:38
Kontaktdaten:

Re: Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von dazedly »

Troll.Soft hat geschrieben:moin,
Du verwirrst Deine Benutzter, wenn Du Klicks auf deaktivierte Buttons erlaubst. Ein Button, der angeklickt werden darf, solte auch anklickbar aussehen. Pack vielleicht um die aktivierte Gruppe eine Aktivrahmen und um die anderen einen Ruherahmen.
tschüß
Troll.Soft
Ich glaube hier geht es nicht unbedingt um eine Aktion die durchgeführt werden soll, weil er den Button gedrückt hat. Der Button frisst eben nur anscheinend das Event und der Bereich unter dem Button soll es empfangen.

@Tilman warum benutzt du nicht einfach eine groupbox mit checkable für dein Vorhaben?
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von Tilman Räger »

Hallo,
Troll.Soft hat geschrieben: Du verwirrst Deine Benutzter, wenn Du Klicks auf deaktivierte Buttons erlaubst. Ein Button, der angeklickt werden darf, solte auch anklickbar aussehen. Pack vielleicht um die aktivierte Gruppe eine Aktivrahmen und um die anderen einen Ruherahmen.
So ungefähr ist es auch gedacht. Ich habe mehrere gleichartige Elemente in einer dynamischen Liste von denen jeweils eins aktiv und optisch hervorgehoben (durch 3D-Design 'abgesenkt' :-) ) ist. Die anderen sind inaktiv und alle enthaltenen Elemente sind deaktivert. Da aber einige dieser Elemente (z.B. die Checkbox) zur Darstellung von Eigenschaften des betreffenden Objektes auch im nicht selektierten Zustand benötigt werden, kann ich nicht einfach diese Objekte verschwinden lassen. Dadurch habe ich eben das Problem, das die Aktivierung eines Objektes nicht funktioniert, wenn ich beim Anklicken zufällig eines der (deaktivierten) Bedienelemente des jeweiligen Objektes erwische.
dazedly hat geschrieben: @Tilman warum benutzt du nicht einfach eine groupbox mit checkable für dein Vorhaben?
Eben weil das ganze in einer dynamischen Liste vor sich gehen soll. Ausserdem ist das Design so vorgegeben.

Gruss
Tilman (Räger)
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Re: Abfangen von Mouse-Klicks auf deaktivierte Buttons

Beitrag von Troll.Soft »

n'abend,
und wie sieht es aus, wenn Du auf die eingebaute Maussteuerung verzichtest, indem Du keine QButtons, Checkboxen etc verwendest, sondern eigene Widgets, die über Events selbst gesteuert werden. Die Widgets können aussehen wie Du lustig bist und die Reaktion wird auch nur von Deinem Programm bestimmt.
tschüß
Troll.Soft
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: [gelöst]Abfangen von Mouse-Klicks auf deaktivierte Butto

Beitrag von Tilman Räger »

Hallo,

Der Tip mit dem EventFilter hat funktioniert - an sich ganz simpel, wenn man erst mal auf die Idee gekommen ist. Danke noch mal für alle Tips!

Tilman
Antworten