Modell erstellen (MVC)

Alles rund um die Programmierung mit Qt
Antworten
Allroad
Beiträge: 61
Registriert: 23. Oktober 2007 10:19
Kontaktdaten:

Modell erstellen (MVC)

Beitrag von Allroad »

Hi,

bin grad dabei das Model/View Konzept zu verstehen und da hätte ich eine Frage:

in dem Beispiel aus der Dokumentation wird ein einfaches Read-only Modell erstellt. http://doc.trolltech.com/4.3/model-view ... odels.html

In der Klassendeklaration wird der Konstruktor(?) so definiert:

Code: Alles auswählen

...
   public:
StringListModel(const QStringList &strings, QObject *parent = 0)
         : QAbstractListModel(parent), stringList(strings) {}
...
kann mir jemand vorallem die zweite Zeile bitte erklären?

Danke!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Modell erstellen (MVC)

Beitrag von franzf »

Allroad hat geschrieben:

Code: Alles auswählen

...
   public:
StringListModel(const QStringList &strings, QObject *parent = 0)
         : QAbstractListModel(parent), stringList(strings) {}
...
kann mir jemand vorallem die zweite Zeile bitte erklären?
Das hat weder was mit Qt noch mit MVC zu tun, das ist einfach eine Basisinitialisierung. Du willst ja dass deine Klasse (StringListModel) beim initialisieren auch die Sachen aus dem Konstruktor der Basisklasse macht - dafür ist das erste, direkt hinter dem ":". Das zweite schimpft sich Elementinitialisierung und füttert den Member (stringList) deiner Klasse mit dem Wert, der dem Konstruktor übergeben wurde (strings).

Ich denke es lohnt sich für dich da mal ein bisschen C++-Literatur zu wälzen - stöber einfach mal durch die Links hier.

Grüße
Franz
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

QAbstractListModel ist ne abstrakte (weil unvollstaendige) Klasse fuer eindimensionale Models. Sie implementiert dir paar funktionen, die bei eindimensionalen Modells quasi standard sind, also eigentlich nur tipparbeit waeren.

QAbstractItemModel waer die Allgemeinere Basis, die auch geeignet waer fuer 2 dimensionale models, und oder eltern (parent) basierte models (Treeview heissen die unter windows) ...

QAbstractListModel teil der QObjectHirarchie ist, und fuer einige member die es erzeugt ein QOBject parent braucht, sollte man den Konstruktor von QAbstractListModel auch mit dem parent aufrufen ... das machst du mit
"QAbstractListModel(parent)". Damit gibst du eigentlich das parent von deinem construktor nur an das Object weiter von dem du ableitest.

das gebilde direkt nach der konstruktor def zeile vorm codeblock fuer den konstruktor (also die 2. zeile da) nennt man initialisierungsliste ... constante member und referenzen sowie basisklassen kann man nur da initielisieren !

stringList(strings) initialisiert deine referenz auf ne Stringliste, also die membervariable, mit einer Stringliste, ueber den parameter im konstruktor von aussen ....
sprich du legst ne stringliste an ... uebergibst die deiner Modelimpl im Konstruktor, und die arbeitet von nun ab auf der uebergebenen liste, sie hat also keine eigene.
Sprich du musst kannst die stringliste aussen lustig bearbeiten, wenn fertig bist, sagst dem modell das es mal neu gezeichnet werden sollte, und voiala, es aktualisiert die daten auf basis der stringliste ....

Das sind aber uebliche c++ techniken, hat mit qt weniger zu tun.
Bevor du dich mit der QT rumaergerst, sollte aber C++ basiswissen vorhanden sein, sonst hast ned viel freude ....

Ciao ...
Allroad
Beiträge: 61
Registriert: 23. Oktober 2007 10:19
Kontaktdaten:

Beitrag von Allroad »

Danke euch für die schnellen und ausführlichen Antworten! Ich habs leider befürchtet dass es weniger mit Qt/MVC zu tun hat, vielmehr mit C++, und da bin ich auch nicht so weit fortgeschritten mit meinen Kenntnissen...! naja ich schau mir nochmal die Doc über Klassen in C++ an!

Gruss,
Mihai
Antworten