2010-11-19 14 views
1

Wie verwenden Sie MV in Qt? Ich habe diese beiden Ansätze versucht:Welches ist das bevorzugte Muster für die Verwendung von Qt Model-View Architecture?

  1. Wenn ein ist vorhanden/Legacy Code „data“ -Klassen, ich benutze Modell als Fassade. Die Modell-Implementierungsklasse erhält eine Referenz auf Daten und ruft ihre Funktionen auf Modell-Artikel Zugriff Aufrufe.

  2. Für neue Implementierungen Ich leiten die Datenklasse von QAbstractModel ab.

Gibt es einen anderen Weg, wie Sie es tun?

+0

FWIW, das ist ähnlich wie ich Dinge tun. 1) Wenn Code vorhanden ist, der * Widget-Klassen verwendet, lassen Sie ihn in Ruhe, es sei denn, er benötigt eine Überarbeitung der Funktionalität. 2) Wenn vorhandene/ältere Codedatenklassen vorhanden sind, verwenden Sie das Modell als Fassade. 3) Wenn ich eine neue Implementierung benötige, wie viel hängt von den Daten ab? Wenn es sich um einen guten Betrag handelt, erstelle ich eine Datenklasse und verwende das Modell als Fassade, so dass die Methoden im Allgemeinen von den UI-Details getrennt sind. 4) Else abgeleitet von QAbstractModel. –

Antwort

1

Der Ansatz, den ich am Ende genommen habe, ähnelt dem, den Sie vorschlagen. Ich verwende derzeit eine Fassade, um zwischen meinem alten Datenmodell in das QAbstractModel zu mappen.

Zuerst war die Fassade ein bisschen zu kompliziert, aber langsam ziehe ich Funktionalität aus dem Fassadenmodell heraus und schiebe es in mein Datenmodell. Und dann werde ich eines Tages die Fassade komplett entfernen, damit mein Modell DAS Modell ist.

Mit einem einzigen Modell wird mein Kopf weniger weh tun.

-1

Der MV-Code in Qt ist ein bisschen chaotisch und fühlt sich arktisch zu implementieren. Vor allem, wenn Sie hierarchische Listen (Baumansichten) implementieren müssen.

Je nach Bedarf habe ich festgestellt, dass die Verwendung der Komfortklassen QListWidget, QTableWidget und QTreeWidget in manchen Fällen weniger schmerzhaft sein kann.

+0

-1 Sorry, ich frage nicht nach einer Alternative, aber für Best Practice mit MV in Qt. Eigentlich finde ich sie nicht unordentlich. Im Gegensatz. Alle Arten von Modellen (Baum, Tabelle. Liste) funktionieren gut für mich. Entschuldigung, diese alten Komfortklassen sind nicht die Option in nicht trivialen Anwendungen. –

+0

In diesem Fall ... http://doc.qt.nokia.com/4.7/model-view-programming.html – BastiBen

Verwandte Themen