Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Einstieg in Model-View-Konzept
QtWS25 Last Chance

Einstieg in Model-View-Konzept

Scheduled Pinned Locked Moved German
109 Posts 10 Posters 90.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    giesbert
    wrote on last edited by
    #15

    Sach einfach Bescheid, das bekommen wir schon hin.

    Nokia Certified Qt Specialist.
    Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

    1 Reply Last reply
    0
    • P Offline
      P Offline
      Panke
      wrote on last edited by
      #16

      Man könnte eine XML-Datei (oder S-Ausdrücke, oder .. ) in einem Baum darstellen. Muss ja nicht für Baum/Liste/Tabelle das gleiche Beispiel sein.

      1 Reply Last reply
      0
      • G Offline
        G Offline
        goetz
        wrote on last edited by
        #17

        Ein XML-Modell habe ich sogar schon halb fertig, die gibt's aber meines Wissens nach auch schon fix & fertig im Netz. Eine QObject-Hierarchie wird in den Einstiegskursen (KDAB & ICS) auch immer gerne genommen.

        http://www.catb.org/~esr/faqs/smart-questions.html

        1 Reply Last reply
        0
        • W Offline
          W Offline
          Wolf P.
          wrote on last edited by
          #18

          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.

          1 Reply Last reply
          0
          • G Offline
            G Offline
            giesbert
            wrote on last edited by
            #19

            Klingt wie eine Gute idee, aber willst du wirklich mit den QXxxWidgets anfangen? Oder lieber gleich mit den QXxxViews?

            Nokia Certified Qt Specialist.
            Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

            1 Reply Last reply
            0
            • W Offline
              W Offline
              Wolf P.
              wrote on last edited by
              #20

              Darum geht es doch gerade ;)
              zu sehen, ob und wann es mit der "Tiefkühlware" kneift

              1 Reply Last reply
              0
              • G Offline
                G Offline
                goetz
                wrote on last edited by
                #21

                [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.

                http://www.catb.org/~esr/faqs/smart-questions.html

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  giesbert
                  wrote on last edited by
                  #22

                  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?

                  Nokia Certified Qt Specialist.
                  Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    goetz
                    wrote on last edited by
                    #23

                    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.html

                    EDIT:
                    Jetzt auch im Group-Wiki: "Stoffsammlung MVC-Tutorial":http://developer.qt.nokia.com/groups/qt_german/wiki/Stoffsammlung_MVC-Tutorial
                    Bitte dort weiterentwicklen

                    http://www.catb.org/~esr/faqs/smart-questions.html

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      giesbert
                      wrote on last edited by
                      #24

                      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?

                      Nokia Certified Qt Specialist.
                      Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        goetz
                        wrote on last edited by
                        #25

                        Tabelle würde ich von Anfang an mit einbauen. Damit ist das Model dann für alle drei View-Typen (List, Table, Tree) verwendbar. Die "echte" Tree-Variente müsste man dann noch mit reinflicken.

                        http://www.catb.org/~esr/faqs/smart-questions.html

                        1 Reply Last reply
                        0
                        • G Offline
                          G Offline
                          giesbert
                          wrote on last edited by
                          #26

                          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...

                          Nokia Certified Qt Specialist.
                          Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                          1 Reply Last reply
                          0
                          • W Offline
                            W Offline
                            Wolf P.
                            wrote on last edited by
                            #27

                            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?

                            1 Reply Last reply
                            0
                            • G Offline
                              G Offline
                              goetz
                              wrote on last edited by
                              #28

                              Ich habe bisher alles davon in meinem Projekt benötigt :-) :-)

                              Die Frage ist was ist der Bedarf für ein eigenes Model, d.h. warum schreibt man ein komplett eigenes Model und passt nicht ein bestehendes an?

                              http://www.catb.org/~esr/faqs/smart-questions.html

                              1 Reply Last reply
                              0
                              • W Offline
                                W Offline
                                Wolf P.
                                wrote on last edited by
                                #29

                                Ja, klar. Aber das weiß ein Neueinsteiger ja noch nicht, und er fragt sich ggf. wozu diese "neuen" Konzepte. Und wir sollten das für ihn erfahrbar machen - meine ich.

                                1 Reply Last reply
                                0
                                • G Offline
                                  G Offline
                                  giesbert
                                  wrote on last edited by
                                  #30

                                  Ein existierendes anpassen hats nur, wenn in dem projekt schon welche da sind.

                                  Aber dann sollten wir erst mal überlegen, was der grund für QTableView & model im gegensatz zu QTableWidget ist.

                                  1.) Daten können in eigenen strukturen gehalten werden --> wieder verwendung der Daten schicht (wenn's sowas gibt)
                                  2.) Zugriff auf die Daten ist einfacher (nicht immer TableWidget--> find --> get --> etc.)
                                  3.) Erweiterbarkeit (neue features, neue zeilen/spalten, ...)
                                  ... (spontan fällt mir gerade nix ein)

                                  Nokia Certified Qt Specialist.
                                  Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                                  1 Reply Last reply
                                  0
                                  • G Offline
                                    G Offline
                                    goetz
                                    wrote on last edited by
                                    #31

                                    Für mich persönlich fallen die QxxxWidgets nicht unter den Punkt Model-View-Controller, das sind bequeme Klassen, die alles in einer Black-Box kapseln. Das ist prima für bestimmte Anwendungsfälle, hat aber wie gesagt für mich nichts mit MVC zu tun (wie's intern implementiert ist, tut da ja nichts zur Sache) - man hat (bis auf den Delegate) keinen Einfluss auf das Model und die View.

                                    Wenn wir über Model-View-Controller reden, fängt das bei mir mit einem eigenen Model an. Ggf. erweitert man eine View (habe ich auch schon gemacht, weil die Default-Implementierung für uns nicht passt). Je nach Anwendungsfall hat man noch 'nen Delegate für's optische.

                                    Die Frage ist auch, wo legt man das Einstiegslevel fest. Soll die Zielgruppe schon wissen, was MVC ist und wir vermitteln nur, wie man es mit Qt macht, oder müssen wir noch eine allgemeine Einführung dazu geben?

                                    Vor einer klaren Abgrenzung wann man QxxView + eigenes Model verwenden soll und wann QxxWidget würde ich abraten. In der IT hängt da zu vieles vom "kommt darauf an" ab. Man kann natürlich Vor- und Nachteile angeben, Anwendungsbeispiele, etc. Die Entscheidung kann einem aber niemand abnehmen. In unserer Anwendung verwenden wir beides, je nachdem was gerade gemacht werden muss, und wie es einfacher zu lösen ist.

                                    In diesem Zusammenhang wäre dann vielleicht ein eigenes Tutorial "Die QtxxWidget-Klassen erweitern" angebracht?

                                    http://www.catb.org/~esr/faqs/smart-questions.html

                                    1 Reply Last reply
                                    0
                                    • G Offline
                                      G Offline
                                      giesbert
                                      wrote on last edited by
                                      #32

                                      Das wäre ja schon fast ein kapitel für ein buch inzwischen :-)

                                      Nokia Certified Qt Specialist.
                                      Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                                      1 Reply Last reply
                                      0
                                      • P Offline
                                        P Offline
                                        Panke
                                        wrote on last edited by
                                        #33

                                        Zum Einstiegslevel: Nicht bei Adam und Eva anfangen. MVC kann man ja mal mit drei Sätzen anreißen, aber Zielgruppe sollten Programmierer sein, nicht die Berufsschulklasse im 1. Lehrjahr.

                                        1 Reply Last reply
                                        0
                                        • G Offline
                                          G Offline
                                          giesbert
                                          wrote on last edited by
                                          #34

                                          Evtl kann man mal das design pattern dahinter erläutern, wäre ein einstieg, oder?

                                          Nokia Certified Qt Specialist.
                                          Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved