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.7k 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
    goetz
    wrote on last edited by
    #5

    Problem bei der M-V-Programmierung mit Qt ist, dass es definitiv kompliziert ist :-/

    Ich habe den o.g. Artikel noch nicht gelesen, der scheint aber wirklich alles abzuhandeln. Geht's Dir um einen bestimmen Aspekt? Meistens hakt es nämlich an der Programmierung des ersten eigenen Modells (QAbstractItemModel-abgeleitete Klasse). Bei den Delegates kommt man meistens mit etwas try-and-error und spicken bei den Trolls weiter, beim Model hilft das leider nichts.

    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
      #6

      Ich finde, eingangs fehlt es an einem Motivierungsabsatz: die Stelle, die mich ganz gierig macht, den Artikel zu verschlingen. Stünde dort ein dem Anschein nach leichtgewichtiges Beispiel, das es dann letztlich doch in sich hat, so dass man nachweislich mit einfacheren Mitteln scheitert, dann wäre das vermutlich hoch-motivierend.

      Und ich nehme an, es ist nicht so kompliziert zu verwenden, eher kompliziert alles zu verstehen. Also sollte ich vielleicht eher nach einem einfachen how-to suchen (oder eins schreiben? würdest du helfen?)

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

        Hast du dir mal die examples angesehen? Die sind glaub ich auch ganz gut.

        Der witz is ja, du kannst mit einem einfachen Table model (read-only) anfangen, und das stück für stück ausbauen (daten editieren, zeilen hinzufügen/löschen, Spalten hinzufügen / löschen, ...).

        Die meisten Probleme, die ich bisher bei Leuten gesehen haben, ist beim editieren / verändern der Daten:

        Es wird vergessen beginXXX endXXX oder emit dataChanged(a,b) aufzurufen.

        Und kompliziert wird es bei editierbaren Tree Models und proxys :-)

        Aber wir können schon einhow-to schreiben, kp.

        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
          #8

          Drag'n'Drop macht sehr viel spass :-) Ich sag' nur dangling pointers, persistent indexes etc.pp. Ein gutes deutsches HowTo wäre aber sicher nicht verkehrt. Und. ggf. mal mit einem Listen-Modell anfangen und erst später auf ein Tree-Modell erweitern.

          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
            #9

            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?)

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

              Wenn du jetztdas ganze nicht als datei nimmst, sondern als fenster für logs die mit qDebug kommen, wär's fast schöner, weil es dann gleich dynamisch werden kann :-)

              Aber prinzipiell ist das ein ganz guter anfang.

              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
                #11

                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 ;) ?

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

                  Die idee ist gut, ich denke, man sollte das irgendwie als verketten artikel bauen (Teil 1 - Teil X).

                  Nachdem du nach einer einführung gefraght hast:

                  Sollen wir dir Aufgaben stellen und du löst sie fg?

                  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
                    #13

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

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

                      Tja, die Sache mit der Zeit immer... kenne ich nur zu gut.

                      Was mir noch fehlt, ist eine gute Idee für das Modell. Muss ja auch auf allen drei Plattformen (Linux, Win, Mac) laufen.

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

                      1 Reply Last reply
                      0
                      • 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

                                          • Login

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