QListWidget: Indizes bei Mehrfachselektion ermitteln - Wie ?

Alles rund um die Programmierung mit Qt
Antworten
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

QListWidget: Indizes bei Mehrfachselektion ermitteln - Wie ?

Beitrag von comer352l »

Hallo,

wie komme ich am einfachsten an die Indizes der selektierten Zeilen eines QListWidget ? SelectionMode ist QAbstractItemView::ExtendedSelection, also Mehrfachselektion mit Lücken.
Eine einfache Methode, die z.B einen Integer-Vektor zurückgibt, scheint es ja leider nicht zu geben...
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

hey, weisst du was, die doku lesen wirkt wunder!

Code: Alles auswählen

QList<QListWidgetItem *> QListWidget::selectedItems () const
Returns a list of all selected items in the list widget.
[/code]
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

Hey, weist du was, Frage lesen wirkt Wunder !
Ich will nicht die Items, sondern die Indizes :lol:. Trotzdem danke...

Ich kann dir versichern, dass ich mir die Dokumentation schon angeschaut habe und auch die Suchfunktion verwendet habe. Mag sein, dass ich was überlesen habe, manchmal sieht man auch den Wald vor lauter Bäumen nicht. Wenn dem so ist, dann schon mal vorsorglich: Entschuldigung !
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

QItemSelectionModel * QAbstractItemView::selectionModel () const
QModelIndexList QItemSelectionModel::selectedIndexes () const
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

Super, danke ! Auf die Idee über QItemSelectionModel zu gehen wäre ich nie gekommen...
Im nächsten Schritt müsste man dann halt noch alle QModelIndex durchgehen und jeweils mit der row()-Methode den dazugehörigen Index auslesen. Ihr müsst zugeben: nicht gerade elegant...

Ganz spontan würde ich sagen, dass das eine Funktion, wie z.B.

Code: Alles auswählen

QList<int> QListWidget::getSelectedIndexes()
ein sinnvoller Verbesserungsvorschlag für künftige Qt-Versionen wäre !?
Auf der anderen Seite kann ich nicht so ganz glauben, dass diese Idee noch niemand vor mit hatte... Ich könnte mir vorstellen, dass es einen guten Grund gibt, warum man bisher auf sowas verzichtet hat ?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nein, erstens gibt es eine Methode alle ausgewählten Rows zu bekommen. Zweitens kann man die nicht als int zurückgeben, da man ja sonst nicht weis in welcher Ebene man sich befindet (parents...)
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

upsala hat geschrieben:Nein, erstens gibt es eine Methode alle ausgewählten Rows zu bekommen.
Welche Methode meinst du ? Mit QListWidget::currentRow() bekommt man immer nur einen Index zurück, bei Mehrfachselektion ist dass dann immer der der ersten selektierten Zeile.
Zweitens kann man die nicht als int zurückgeben, da man ja sonst nicht weis in welcher Ebene man sich befindet (parents...)


Ich arbeite noch nicht lange mit Qt und habe QListWidget bisher nur als "einfache" Text-Liste verwendet. Ich weiß daher nicht, wie kompliziert die Item-Struktur werden kann bzw. wie groß der gebotene Funktionsumfang wirklich ist. Die Erklärung scheint mir aber zumindest mal nicht unplausibel.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Super, danke ! Auf die Idee über QItemSelectionModel zu gehen wäre ich nie gekommen...
Welche Methode meinst du?
Schon mal versucht die Doku durchzulesen?
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

upsala hat geschrieben: Schon mal versucht die Doku durchzulesen?
Definitiv ja. Is es denn so schwer, einfach den Namen der Methode zu nennen ? Hat doch beim ersten mal prima geklappt :wink:.
Meinst du QItemSelectionModel::selectedRows() ?! Würde in meinem Fall wohl das gleiche Ergebnis wie QItemSelectionModel::selectedIndexes() liefern, gibt aber eben auch nur eine QModelIndexList zurück. Die Indizes muss man dann immer noch einzeln mit der row()-Methode gewinnen.
Antworten