QListWidget: Indizes bei Mehrfachselektion ermitteln - Wie ?
QListWidget: Indizes bei Mehrfachselektion ermitteln - Wie ?
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...
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:
hey, weisst du was, die doku lesen wirkt wunder!
[/code]
Code: Alles auswählen
QList<QListWidgetItem *> QListWidget::selectedItems () const
Returns a list of all selected items in the list widget.Hey, weist du was, Frage lesen wirkt Wunder !
Ich will nicht die Items, sondern die Indizes
. 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 !
Ich will nicht die Items, sondern die Indizes
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 !
Code: Alles auswählen
QItemSelectionModel * QAbstractItemView::selectionModel () const
QModelIndexList QItemSelectionModel::selectedIndexes () const
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.
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 ?
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()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 ?
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.upsala hat geschrieben: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...)
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.
Definitiv ja. Is es denn so schwer, einfach den Namen der Methode zu nennen ? Hat doch beim ersten mal prima geklapptupsala hat geschrieben: Schon mal versucht die Doku durchzulesen?
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.