Seite 1 von 1

Fragen zu Listen (Model/View) und eigenem Delegate

Verfasst: 9. März 2006 01:31
von autip
Hallo!

Ich bin zur Zeit dabei folgendes zu Programmieren:
In meiner GUI sollen drei ListViews angezeigt werden.

- Die erste stellt ein StringListModel(QStringList) dar, in der ich Variablennamen speichere. Diese habe ich zum größten Teil fertig.

- In der zweiten Liste sollen zu jeder Variable Gleitkommazahlen abgespeichert werden. Diese sollen über eine DoubleSpinBox eingegeben werden können.

- In der dritten Liste sollen zu jeder Variablen Werte in Form von LCDs ausgegeben werden.

Leider kann ich keine Tabelle benützen, da ich zwischen den einzelnen Listen noch andere Elemente plazieren muss.


Nun zu meinen Fragen:

1.) Ich habe vor, drei eigenständige Modelle/Listen anzulegen.
Beim ersten habe ich wie erwähnt schon ein StringListModel mit einer QStringList benutz.
Bei den beiden anderen Listen muss ich double-Zahlen statt Strings speichern. Welche Modelle/Listen kann ich hierfür verwenden?
Wenn ich eine QList<double> anlege finde ich kein passendes Modell. Muss ich es womöglich selbst programmieren, gibt es da noch kein fertiges?
Als Delegate habe ich bereits ein passendes Beispiel im QT-Tutorial gefunden: "SpinBoxDelegate". Das möchte ich nur auf double statt int-Werten bzw. doubleSpinBox statt SpinBox umschreiben.

Oder ist es sinnvoller, wenn ich als Modell eine Tabelle mit 3 Spalten anlege und in den ListViews je nur eine Spalte anzeigen?

2.) Kann ich die Scrollbars der drei ListViews miteinander Verknüpfen, so dass die zueinander gehörenden Zeilen aller Listen immer auf gleicher Höhe sind. (Es befinden sich in allen Listen gleich viele Elemente.) Wie wird das gemacht? Gibt es passende Signals/Slots?

3.) Kann ich in meiner ersten Liste mit StringListModel(QStringList) Elemente eingrauen/deaktivieren? Gibt es da etwas fertiges?
Kann ich bei den anderen beiden Liste ebenfalls Elemte eingrauen/deaktivieren?


So, das war's für den Anfang mal. Schon mal vielen Dank für eure Hilfe!!!

Verfasst: 11. März 2006 21:56
von upsala
Ein QAbstractItemModel halte ich für diesen Fall angebracht.

Für das eingrauen wirst du

Code: Alles auswählen

virtual Qt::ItemFlags flags ( const QModelIndex & index ) const
überschreiben müssen

Verbinden kannst du die drei Listen über die jeweiligen verticalen Scrollbars

Für den LCD-Look wirst du dir im Delegate selbst was zeichnen müssen.