Sollte ich vielleicht nur einen Zeiger im Model speichern?
Jeee nach dem was du willst ....
Ne eigene Datenhaltung nur fuer oder im Model macht nur bei 2 Punkten sinn.
1. Die Struktur der Daten ist sehr simpel (Stringlist) und das was man mit macht ist auch eher trivial. Um sich ne eigene Modelklasse zu sparen, schiesst man alles in ne Stringlist, und nimmt gleich nen StringlistModel.
2. Mann will die Ein und ausgabe abpuffern, also den User temporaere enderungen Vornehmen lassen, und dann erst mit ner seperaten Aktion in die eigentliche Daten uebernehmen.
Fuer alle anderen Faelle kommt man besser wenn man direkt auf den Daten arbeitet
Und Zeiger ? Qt ist C++ ! Referenz da wo geht, Zeiger da wo man muss ! Also ich wuerd ne Referenz auf deine Datenklasse empfehlen
Zu 2tens ...
Ne Dummy Zeile ist eher aufwendiger geht aber auch. DU muesstest dein Model dazu bringen, immer eine Zeile mehr anzuzeigen, als deine eigentlichen daten haben.
Bei index.row das immer abfangen und die Dummy Zeile Schreiben, vielelicht so gar mit ner anderen Farbe etc. Und wenn er die "bearbeitet", dann den wert in dein Datenmodell einfuegen, die dummy zeile wuerde es dann ne zeile tiefer setzen , ned vergessen die aenderung dem View mitzuteilen ....
Einfacher ist von aussen was einzufuegen ....
Ich faend Context Menues elegent ....
Zum bearbeiten, musst das Model auf editiable schalten ....
Du kannst dem model sogar sagen, das es Zeilen vom View aus loeschen kann (entf druecken bei auswahl etc. )
Dann schiesst dir das view die Events ans model durch, und du musst drauf reagieren ....
du musst dann einfach nur RemoveRows() re-implementieren ...
A removeRows() implementation must call beginRemoveRows() before the rows are removed from the data structure, and it must call endRemoveRows() immediately afterwards.
A removeColumns() implementation must call beginRemoveColumns() before the columns are removed from the data structure, and it must call endRemoveColumns() immediately afterwards.
Allgemein zu den MVC:
Nachteile gibt es:
- viele eigene Besonderheiten sind recht umstaendlich zu implementieren, das ganze ist halt sehr abstract ...
- Performance, ne eigene frickelei die direkt auf nen Itembasierten view alles zusammenschraubt, ist fast immer schneller.
die Nachteile sind aber ganz selten relevant.
demgegenueber stehen die Vorteile:
- MVC ist toll wenn man von seinen Daten mehrere "Sichten" braucht. Alle views benutzen die selbe Schnittstelle zum Datenmoddel.
- Man kann die Views recht schnell austauschen, und recht gut neue implementieren (mal als liste, mal als dropdown, mal als table)
- Abstrakte einheitliche Schnittstelle, du kannst nen Modell bauen und nen anderen entwickler geben, der braucht die daten etc gar ned zu kennen, weis aber wie er ueber das model drauf zugreifen kann. Das modell sagt ihm auch, was alles unterstuetzt wird ...
- Man kann Modells kaskadieren, das heisst der andere entwickler kann nen Modell dazwischenhaengen, was die Ansicht fuer die views "umbaut", ohne die daten kennen zu muessen.
In umfangreicheren Projekten ist sowas Goldwert ....
Hier noch paar links:
http://de.wikipedia.org/wiki/Model_View_Controller
http://de.wikipedia.org/wiki/Entwurfsmuster
Ciao ...