Seite 1 von 1

Custom QListWidget

Verfasst: 19. Oktober 2009 18:09
von suho
Hallo, ich hoffe ich sprech nichts an was schon öfter gefragt wurde.

Ich habe ein kleines GUI Prgramm geschrieben, jedoch würde ich dieses an einer Stelle aufgrund Überischtlichkeit noch verbessern.
Dazu brauche ich ein ListWidget welches "custom" Items aufnehmen kann, die wiederum aus Widgets bestehen.
Jedes Item soll 2 Elemente besitzen, einen Text (QString) und eine SpinBox.
Die erste Zeile könnte noch eine Beschriftung für die beiden Spalten (QString, SpinBox) enthalten. Meine Frage is jetzt, wie ich das am besten mache.
Erstelle ich eine Klasse und leite diese von QListView/Widget ab?

Vielen Dank für eure Hilfe!

Verfasst: 19. Oktober 2009 19:36
von upsala
Du suchst ein QItemDelegate. Und brauchst du wirklich in jeder Zeile permanent eine QSpinBox, oder nur bei Bedarf?

Verfasst: 23. Oktober 2009 17:47
von suho
Gutes Stichwort! Ich war in der Lage mit einem Codebeispiel die Funktionalität zu erreichen. Allerdings mit QTableWidget und QItemDelegate.
Ich bin mir nur nicht sicher ob nicht ein QListWidget die bessere Wahl ist, denn das müsste ja auch funktionieren. Jedenfalls steht folgendes in der Class Reference:
"When subclassing QListWidgetItem to provide custom items, it is possible to define new types for them so that they can be distinguished from standard items."
Damit sollte ich doch in der Lage sein als Item ein Layout welches einen Label links und eine SpinBox rechts enthält zu erstellen, oder ist das eher umständlich?
Und brauchst du wirklich in jeder Zeile permanent eine QSpinBox, oder nur bei Bedarf?
Ich habe eine Klasse welche eine QMap (QString, double) enthält.
Hier werden Namen mit einem double-Wert assoziiert. Der Name soll nicht editierbar sein, jedoch der double-Wert der einem Namen zugeordnet ist soll editierbar sein und das für jedes Element in der QMap.
Die SpinBox wird, so wie es gerade implementiert ist, nur angezeigt wenn das Feld in der Tabelle mit einem Doppelklick aktiviert wird, sonst wird der Wert als QString angezeigt. Damit bin ich eigentlich zufrieden.
Ich finde jedoch QTableWidget etas unflexibel weil es keine Funktion addItem oder ähnliches gibt.

Verfasst: 23. Oktober 2009 20:44
von upsala
Dann nimm halt ein QStandardItemModel und eine QTableView und ein passendes Delegate gibt es bei den Examples.