Listview

Alles rund um die Programmierung mit Qt
Antworten
Marco26
Beiträge: 14
Registriert: 8. Januar 2009 16:09

Listview

Beitrag 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
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Marco26
Beiträge: 14
Registriert: 8. Januar 2009 16:09

Beitrag 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
Marco26
Beiträge: 14
Registriert: 8. Januar 2009 16:09

Beitrag von Marco26 »

Danke für den Link. Nur ist das ein protectet slot. Wie kann man dort darauf zugreifen.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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 ;)
Marco26
Beiträge: 14
Registriert: 8. Januar 2009 16:09

Beitrag 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
ganwell
Beiträge: 13
Registriert: 8. Januar 2009 18:50
Wohnort: Luzern, Schweiz
Kontaktdaten:

Beitrag 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
Marco26
Beiträge: 14
Registriert: 8. Januar 2009 16:09

Beitrag 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
ganwell
Beiträge: 13
Registriert: 8. Januar 2009 18:50
Wohnort: Luzern, Schweiz
Kontaktdaten:

Beitrag 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
Antworten