Seite 1 von 1

Listview

Verfasst: 9. Januar 2009 11:18
von Marco26
Hallo Leute,

Ich habe eine Listview ind der ich eine Auswahl aufgezeigt bekomme. Per Mausklickwähle ich mir dann eine Auswahl aus und rufe damit einen Slot auf.

Leider finde ich kein Signal womit ich bei durch scrollen mit der Tastatur(pfeiltasten) diesen Slot aufrufe.
Kennt da jemand was oder kennt einen Trick?

LG Marco :D

Verfasst: 9. Januar 2009 11:35
von RHBaum
warum willst du das scrollen abfangen ???

Wenn du nen listview und nen ItemModell verwendest, wird genau das eigentlich von der QT abstrahiert.

willst du da eigene erweiterte funktionalitaeten einbauen, wirst wohl nen bissi mehr aufwand einplanen muessen und was eigenes implementieren.

Ciao ...

Verfasst: 9. Januar 2009 11:39
von pfid

Verfasst: 9. Januar 2009 11:41
von Marco26
Die listview listet mir eine Auswahl auf, aus welcher ich dann auswählen will. Wenn ich dann ausgewählt habe(per mausklick) wird mir in einem anderen Label Informationen über die Auswahl gezeigt. Ich kann in der listview mit der Tastatur hoch und runter scrollen.Ich hätte gern, dass dabei der Slot die Informationen im Label immer wieder aktuallisiert.

Vielleicht war die listview nicht das optimale Objekt dazu, aber ich bin leider noch ziemlicher QT-neuling.

LG Marco

Verfasst: 9. Januar 2009 13:21
von Marco26
Danke für den Link. Nur ist das ein protectet slot. Wie kann man dort darauf zugreifen.

Verfasst: 9. Januar 2009 13:29
von pfid
Da ich (aus Zeitmangel oder evlt. Blindheit) das currentIndexChanged Signal bei QListView nicht sehe, dachte ich an sowas wie

Code: Alles auswählen

class Lv : public QListView
{
   signals:
      void currentdxChanged(const QModelIndex& idx);

   protected slots:

     void currentChanged (const QModelIndex& current, const QModelIndex& previous) { emit currentIdxChanged(current); }
};
Nur so als Gedanke. Ob das funktioniert hab ich nich getestet ;)

Verfasst: 9. Januar 2009 14:01
von Marco26
ja danke, erstmal. an sowas wie ne abgeleidete klasse habe ich auch schon gedacht,nur hoffe ich immer noch, dass es auch noch einfacher zu lösen geht.

ich werte mmal abwarten ob noch jemand ne ide hat, werde deinen Vorschlag aber mal testen.

danke un lg marco

Verfasst: 9. Januar 2009 15:04
von ganwell
Ich bin nicht sicher ob ich die Frage richtig verstanden habe, aber sollte man nicht das QItemSelectionModel verwenden:

http://doc.trolltech.com/4.5/qabstracti ... ctionModel

* Der User wählt Items auf der QListView aus
* Ein Event kommt: z.B. rechts Click auf die View
* Man holt die selektierten Items mit selectionModel() ab
* Man verarbeitet die Items (oder nur das Item)

Gruss
Ganwell

Verfasst: 9. Januar 2009 22:26
von Marco26
hallo. ne nicht ganz. also in jeder Zeile der Listview steht ein eintrag. sobald ich auf einen eintrag klicke wir in einer anderen view informationen über den eintrag angezeigt.

was ich aber noch will: wenn man so einen eintrag einfach anklickt wird er automatisch markiert(funktioniert schon).....sobald ich jetzt aber mit der tastatur weiter scrolle, soll soll immer in der anderen view die aktuelle information des markierten eintrag angezeigt werden. .....also ohne extra mit maus zuklicken

Verfasst: 9. Januar 2009 22:36
von ganwell
Ahso, dann hilft dir das QItemSelectionModel aber trotzdem, denn da sind die nötigen Signals:

void currentChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentColumnChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentRowChanged ( const QModelIndex & current, const QModelIndex & previous )
void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected )

Gruss
Ganwell