Standard Objekt Signale aufheben
Standard Objekt Signale aufheben
Hallo,
Ausgangssituation ist eine verzweigte ListView.
Nun ist es so, dass bei einer ListView bei einem Doppelklick auf ein ListViewItem das Kinder enthält, dieses erweitert (expanded) oder reduziert(collapsed ) wird.
Dieses Standard SIGNAL möchte ich gerne aufheben/löschen.
Leider funktioniert das mit dem disconnect-Befehlt nicht. Habe ich etwas übersehen?
Des Weiteren würde ich gerne wissen, ob ein Doppelklick auf ein deaktiviertes ListViewItem geblockt wird?
Und, ob man diesen Block evt. aufheben kann?
Vielen Dank für eine Antwort!
snure
Ausgangssituation ist eine verzweigte ListView.
Nun ist es so, dass bei einer ListView bei einem Doppelklick auf ein ListViewItem das Kinder enthält, dieses erweitert (expanded) oder reduziert(collapsed ) wird.
Dieses Standard SIGNAL möchte ich gerne aufheben/löschen.
Leider funktioniert das mit dem disconnect-Befehlt nicht. Habe ich etwas übersehen?
Des Weiteren würde ich gerne wissen, ob ein Doppelklick auf ein deaktiviertes ListViewItem geblockt wird?
Und, ob man diesen Block evt. aufheben kann?
Vielen Dank für eine Antwort!
snure
Hi,
@lepsai
mit QObject::blockSignals() kann ich aber nur alle Signale blockieren oder alle Signale aktivieren.
Meine eigenen definierten Signale möchte ich aber aktivert lassen. Ich will nur das das Standard-Signal der ListView deaktivert wird.
@all
Hat vielleicht jemand eine Lösung für mein zweites Problem? Eine Reaktion auf ein Doppelklick auf ein deaktiviertes ListViewItem zu realisieren.
Ahoi
@lepsai
mit QObject::blockSignals() kann ich aber nur alle Signale blockieren oder alle Signale aktivieren.
Meine eigenen definierten Signale möchte ich aber aktivert lassen. Ich will nur das das Standard-Signal der ListView deaktivert wird.
@all
Hat vielleicht jemand eine Lösung für mein zweites Problem? Eine Reaktion auf ein Doppelklick auf ein deaktiviertes ListViewItem zu realisieren.
Ahoi
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
1. Du willst Signale vom QListView blocken?
2. Ein Doppelklick SIGNAL?
3. Ein SIGNAL auf ein deaktiviertes (setEnabled(false)) ListViewItem?
Soweit alles richtig?
Dann lass 1 + 3 aus. Und in den Slot von dem Doppelklick:
Ansonten mache bitte eine komplette Zusammenfassung.
2. Ein Doppelklick SIGNAL?
3. Ein SIGNAL auf ein deaktiviertes (setEnabled(false)) ListViewItem?
Soweit alles richtig?
Dann lass 1 + 3 aus. Und in den Slot von dem Doppelklick:
Code: Alles auswählen
if ( item -> isEnabled() ) o.ä.
tue was zu tun ist.
Moin moin,
die drei oben angesprochenen Punkte sind soweit richtig.
Zum besseren Verständnis, erläutere ich noch mal die Situation.
Ich habe eine realtiv stark verzweigte ListView. Diese enthält auch mehrere deaktiverte Items. Nun möchte ich gerne eine Reaktion auf ein Doppelklick SIGNAL für ALLE Items realisieren. So weit so gut.
Das Hauptproblem liegt aber darin, das ein Doppelklick auf ein deaktiviertes QListViewItem ignoriert wird und zu keiner Ausführung der zugehörigen SLOT Funktion führt.
Ich möchte aber gerne die deaktivierten Items in meiner QListView aufrecht erhalten und trotzdem eine Reaktion auf einen Doppelklick auf diese Items realisieren.
Nun habe ich mir gedacht, das diese Doppelklicks auf die deaktivierten Items "geblockt" werden. Wenn ja, könnte man vielleicht diese Blocks irgendwie aufheben. Mit der Methode QObject::blockSignals() funktioniert das leider nicht.
Falls es doch keine Möglichkeit gibt das DoppelklickSIGNAL auf ein deaktivertes Item weiterzuleiten, müsste ich notgedrungen die deaktiverten Items wieder "enabled" setzen. Dann würde ja alles wunderbar funktionieren, fast . Jetzt würde aber, ein DoppelklickSIGNAL auf ein parentItem zum einen meine definierte SLOTFunktion aktiveren und zum anderen die "vordefinierte" expanded/collapsed Funktion ausführen.
Darum meine Frage, ob man dieses STANDARD ListView SIGNAL irgendwie aushebeln kann. Über disconnect geht das leider nicht.
Gruß
snure
die drei oben angesprochenen Punkte sind soweit richtig.
Zum besseren Verständnis, erläutere ich noch mal die Situation.
Ich habe eine realtiv stark verzweigte ListView. Diese enthält auch mehrere deaktiverte Items. Nun möchte ich gerne eine Reaktion auf ein Doppelklick SIGNAL für ALLE Items realisieren. So weit so gut.
Das Hauptproblem liegt aber darin, das ein Doppelklick auf ein deaktiviertes QListViewItem ignoriert wird und zu keiner Ausführung der zugehörigen SLOT Funktion führt.
Ich möchte aber gerne die deaktivierten Items in meiner QListView aufrecht erhalten und trotzdem eine Reaktion auf einen Doppelklick auf diese Items realisieren.
Nun habe ich mir gedacht, das diese Doppelklicks auf die deaktivierten Items "geblockt" werden. Wenn ja, könnte man vielleicht diese Blocks irgendwie aufheben. Mit der Methode QObject::blockSignals() funktioniert das leider nicht.
Falls es doch keine Möglichkeit gibt das DoppelklickSIGNAL auf ein deaktivertes Item weiterzuleiten, müsste ich notgedrungen die deaktiverten Items wieder "enabled" setzen. Dann würde ja alles wunderbar funktionieren, fast . Jetzt würde aber, ein DoppelklickSIGNAL auf ein parentItem zum einen meine definierte SLOTFunktion aktiveren und zum anderen die "vordefinierte" expanded/collapsed Funktion ausführen.
Darum meine Frage, ob man dieses STANDARD ListView SIGNAL irgendwie aushebeln kann. Über disconnect geht das leider nicht.
Gruß
snure
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Achso, kapiert. Ja, klingt irgendwie logisch, dass wenn du ein Item disablest, dass es nicht mehr geht. Wo ist denn der Sinn? Du willst, dass es nicht geht, aber eigentlich willst du es doch?
Passt irgendwie nicht, oder? Dann disable es nicht, und hinterlege es grau oder was auch immer. Wie kommt es denn zu dem, dass du das Item nicht brauchst, aber trotzdem Signale davon verwenden willst?
Ich habe das gerade probiert.
verbunden über mein eigenes Signal, das Problem ist nicht, dass das SIGNAL nicht mehr geht, du kannst es nicht mehr anklicken, also müsstest du wohl, eines der events implementieren, die eben für das disablen zuständig sind und nur grau hinterlegen, clickFocus aber zulassen.
Aber ich würde trotzdem gerne einmal wissen, was der Sinn davon ist/sein könnte?
Passt irgendwie nicht, oder? Dann disable es nicht, und hinterlege es grau oder was auch immer. Wie kommt es denn zu dem, dass du das Item nicht brauchst, aber trotzdem Signale davon verwenden willst?
Ich habe das gerade probiert.
Code: Alles auswählen
QListViewItem *item blah
item -> setEnabled( false );
Aber ich würde trotzdem gerne einmal wissen, was der Sinn davon ist/sein könnte?