Custom QListWidget

Alles rund um die Programmierung mit Qt
Antworten
suho
Beiträge: 2
Registriert: 18. Oktober 2009 13:53

Custom QListWidget

Beitrag 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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du suchst ein QItemDelegate. Und brauchst du wirklich in jeder Zeile permanent eine QSpinBox, oder nur bei Bedarf?
suho
Beiträge: 2
Registriert: 18. Oktober 2009 13:53

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dann nimm halt ein QStandardItemModel und eine QTableView und ein passendes Delegate gibt es bei den Examples.
Antworten