Einstieg in Model-View-Konzept
-
Ein de-tutorial fänd ich gut - übersetzen ins Englische könnten wirs, wenns fertig ist. Wäre z.B. folgendes ein guter Kandidat: einen Logdatei-Viewer zu implementieren, der mit der Darstellung einer bereits existierenden Datei zunächst gut zu Rande kommt, auf Grund der Forderung nach Aktualisierung und Filtermöglichkeiten aber später an seine Grenzen stößt (betrachtet es als einen Schuss ins Blaue...) - könnte das funktionieren? (als Aufhänger für ein How-To mein ich?)
-
Beide Varianten sollten vorkommen. Das Tutorial könnte mit einer einspaltigen Liste beginnen, die einfach nur aus einer Log-Datei geladen wird. Und dann kommen Wünsche dazu:
- Spalten (damit Wechsel auf Tabelle)
- Sortierbarkeit
- Filterbarkeit und...
Bums!
- Alternative Quelle(n)
ich glaube so eine Anleitung würde ein Neuling durchlesen wollen, die super-einfach anfängt und Stück für Stück ans Eingemachte geht. Ist ja auch realistisch: kennen wir sie nicht alle die Forderungen nach einem ganz einfachen Einbau, bloß eine Liste, die - sobald der Benutzer dann davor sitzt und "Blut leckt" - wachsen und gedeihen ;) ?
-
Wäre eigentlich das Vernünftigste. Ich meine, zu Qt hab ich wirklich noch nicht ein so inniges Verhältnis, kenne aber bereits einige Frameworks. Vielleicht die besten Voraussetzungen für ein realitätsnahes Umsteiger-Tutorial. Auch die Gliederung halte ich für gut: so um die max. 10 Seiten im Wiki, die können ja ruhig zum Ende hin etwas zulegen an Größe (und Speed, damit's nicht langweilt).
Meine Lust darauf wächst ;) leider meine Zeit nicht, aber mal sehen...
-
Ich halte Liste bzw. Tabelle für ausreichend, schließlich soll man das Model/View-Konzept anhand seines Nutzens für ein konkreten Beispiels verstehen. Welches von beiden geeigneter ist, kann ich im Moment nicht sagen. Da ich für den naivsten Ansatz eine einfache Liste "QListWidget":http://doc.trolltech.com/latest/qlistwidget.html verwenden würde, könnte die Hinleitung zum ListenModel leichter fallen. Aber vielleicht geht man auch erst zu "QTableWidget":http://doc.trolltech.com/latest/qtablewidget.html über, weil man die sortierbare Spaltendarstellung zuerst als nötig empfindet, dann wären die Hauptstationen des Fahrplans diese:
- QListWidget
- QTableWidget (vielleicht als "Exkurs")
- QTableView-basierte Lösung
...^^ das könnte das erste Körnchen fürs Wiki sein, denke ich.
-
[quote author="Gerolf" date="1294303547"]Klingt wie eine Gute idee, aber willst du wirklich mit den QXxxWidgets anfangen? Oder lieber gleich mit den QXxxViews?[/quote]
Zu den Widgets gibt's ja nicht viel zu schreiben, bzw. wäre das ein eigenes Tutorial. Was ich so mitbekomme, gibt's mit den Dingern auch weniger Probleme (= Fragen). Außerdem ist da das MVC ja "versteckt" :-)
Die QxxViews kann man größtenteils auch so ganz gut verwenden. Probleme gibt's eigentlich immer beim Implementieren des ersten eigenen Models.
-
Deswegen würde ich auch mit einem MV - Konzept anfangen.
Meiner meinung nach macht das auch mehr Sinn. Ich arbeite jetzt aj auch schon ein paar Jahre lang mit Qt, und Anfangs (Qt 3) gabs MV ja noch net. Mit 4.x haben wir das alles umgestellt, weils am Ende einfacher und flexibler ist.
Nur wie soll man in so einem Tutorial das einfach Zeigen? Evtl durch große Datenmengen und Speicherverbrauch? Oder ein internes Datenmodell das mittels eines QXxxModel einfach angeflanscht werden kann?
-
Für ein Tutorial würde ich mit einem komplett neuen Model beginnen (also nur von QAbstractItemModel abgeleitet). Alles andere macht es nur wieder noch komplizierter und zeigt auch wieder nicht die Methoden auf, die man implementieren muss.
Also kurz abgerissen mal ein Vorschlag für eine Gliederung (ohne Garantie auf Vollständigkeit, angelehnt an die Qt Tutorials):
- Teil 1 - Read only Model
** index()
** parent()
** rowCount(), columnCount()
** data()
** hasChildren() - Teil 2 - Read-Write Model
** flags()
** setData()
** Signale dazu - Teil 3 - Einfügen/Löschen von Zeilen/Spalten
** insertRows(), insertColumns()
** removeRows(), removeColumns() - Teil 4 - Lazy loading
** canFetchMore()
** fetchMore() - Teil 5 - Drag'n'Drop
** mimeData()
** supportedDropActions()
** mimeTypes()
** dropMimeData()
Siehe auch
"QAbstractItemModel":http://doc.qt.nokia.com/latest/qabstractitemmodel.html
"Model/View Programming":http://doc.qt.nokia.com/stable/model-view-programming.htmlEDIT:
Jetzt auch im Group-Wiki: "Stoffsammlung MVC-Tutorial":http://developer.qt.nokia.com/groups/qt_german/wiki/Stoffsammlung_MVC-Tutorial
Bitte dort weiterentwicklen - Teil 1 - Read only Model
-
Find ich als Gliederung schon sehr gut, ich würde aber noch einen Tree mit einbauen (so als Teil 3.a) und vorher das ganze als Tabelle aufbauen (ich denke ist der mehr genutze fall als der baum).
Sollen wir in dem Zusammenhang noch auf Delegate und oder proxys eingehen?
-
Evtl. kann man auch ein model n views mit einbauen, so zum zeigen (z.B. Liste und Tabelle).
Oder z.B. gegen ende ein hauptmodell (tree) das als Tree angezeigt wird.
Eine ListView die die erste Ebene anzeigt und auswählt, welche childs in einer tabelle angezeigt werden sollen... -
Ich möchte euch nicht stoppen, aber...
...ich hätte gern einen bedarfsgetriebenen Ansatz.Damit will ich sagen, dass wenn der Bedarf nicht erkannt wird, auch die Technik zu seiner Befriedigung langweilig bleiben wird. Ihr wart doch auch in der Schule oder? Wie wurde da gelehrt? Haben die Schüler auch gestöhnt: Wozu brauchen wir das denn später mal?
Merkt ihr worauf ich hinaus will?