Seite 1 von 1

In QListWidget mit Pfeiltasten bewegen

Verfasst: 13. November 2008 11:06
von reinki0013
Hallo zusammen,

ich habe ein QListWidget und darin befinden sich Einträge die mit einer Checkbox verbunden sind....

wenn ich auf einen eintrag klicke, mit der maus, dann wird die checkbox "angehackt" allerdings wenn ich mit den Pfeil "oben" und "unten" Tasten mich bewege, wird diese Checkbox nicht aktiviert...

Beispiel:
5 Einträge in der ListWidget und davon sind bei 3 Einträgen die Checkboxen aktiviert... Jetzt möchte ich gerne mit den Pfeil Tasten "oben" und "unten" ebenfalls sehen ob diese aktiviert sind...

mein signal-slot:

Code: Alles auswählen

connect(ui.ListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(curItem(QListWidgetItem*)));
was muss ich ändern, damit ich mich mit den Pfeiltasten ebenfalls in der Checkbox sehe ob diese "angehackt" ist??

Lg Reinki

Verfasst: 13. November 2008 11:25
von macman
Doku lesen hilft immer. Das ein itemClicked-Signal nicht per Tastatur ausgelöst wird, sollte klar sein. Welches Signal wird also von Tastatur und Maus ausgelöst? Vielleicht itemSelectionChanged?

Gibt es in Österreich eigentlich einen Unterschied zwischen Haken und hacken?

Verfasst: 13. November 2008 11:37
von reinki0013
macman hat geschrieben:Doku lesen hilft immer. Das ein itemClicked-Signal nicht per Tastatur ausgelöst wird, sollte klar sein. Welches Signal wird also von Tastatur und Maus ausgelöst? Vielleicht itemSelectionChanged?

Gibt es in Österreich eigentlich einen Unterschied zwischen Haken und hacken?
Ja also das war mir klar...

Das mit itemSelectionChanged hab ich schon probiert, leider funktioniert es nicht...

Code: Alles auswählen

connect(ui.ListWidget, SIGNAL(itemSelectionChanged(QListWidgetItem*)), this, SLOT(curItem(QListWidgetItem*)));
Wenn ich das so teste, dann tut sich genau gar nichts...

Verfasst: 13. November 2008 13:57
von macman
Was soll denn passieren? Gibt der connect überhaupt true zurück?

Verfasst: 13. November 2008 14:23
von reinki0013
macman hat geschrieben:Was soll denn passieren? Gibt der connect überhaupt true zurück?
Also der connect gibt nicht true zurück...

Er sollte ja in die Funktion

Code: Alles auswählen

curItem(QListWidgetItem *item)
springen, weil in dieser Funktion bekomme ich dann den Status der Checkbox zurück...

Verfasst: 13. November 2008 14:30
von macman
reinki0013 hat geschrieben:Also der connect gibt nicht true zurück...
Na dann guck mal in die Debugkonsole. Da steht bestimmt sowas wie 'No such slot'.
reinki0013 hat geschrieben:Er sollte ja in die Funktion

Code: Alles auswählen

curItem(QListWidgetItem *item)
springen, weil in dieser Funktion bekomme ich dann den Status der Checkbox zurück...
Ohne connection kein Funktionsaufruf. Das ist immer das erste was man prüfen sollte, ob eine connection überhaupt zustande gekommen ist.

Verfasst: 13. November 2008 14:37
von reinki0013
ja gut und wie soll ich jetzt weiter vorgehen??

und in meiner debugkonsole steht nirgends "No such slot"...

hat jemand einen tipp für mich...

Verfasst: 13. November 2008 14:47
von macman
Mein Fehler, in der Konsole wird 'No such signal stehen'. itemSelectionChanged hat nämlich keinen Parameter. Ist mir auch jetzt erst aufgefallen.

Verfasst: 17. November 2008 09:45
von reinki0013
macman hat geschrieben:Mein Fehler, in der Konsole wird 'No such signal stehen'. itemSelectionChanged hat nämlich keinen Parameter. Ist mir auch jetzt erst aufgefallen.
ja und genau das war das problem...

also ich habe es so gelöst:

und zwar hatte ich eine Funktion

Code: Alles auswählen

curItem(QListWidgetItem*)
und die habe ich nun überladen

Code: Alles auswählen

curItem()
und mit dem SIGNAL verbunden und siehe da, es funktioniert...

so sieht dieses connect jetzt aus:

Code: Alles auswählen

connect(ui.ListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(curItem()));
das Problem war nämlich, das itemSelectionChanged keinen Parameter übernimmt...

Lg Reinki