MVC-Design mit Qt
Verfasst: 20. November 2007 23:50
Hi
Ich wollte einmal fragen, wie wir unser Projekt nach dem Model-View-Controller Prinzip in QT am Besten strukturieren können.
In QT ist es ja so, dass es verschiedene Views gibt, wie z.B. TreeView oder TableView. Diese werden von einem Model mit Daten versorgt.
Bei unserem Projekt ist es jetzt so, dass wir erstmal ein MainWindow haben. Dieses beinhaltet die Toolbars und die Menüs und eine Status-Leiste.
In diesem MainWindow sind nun gestapelte Layouts mit einem widgetStack realisiert. Je nachdem, was der Benutzer gerade macht wird die entsprechende Page aufgerufen.
Hier mal exemplarisch skizziert für die Seite "Studenten bearbeiten":
Benutzer -> MainWindow -> StudentsPage
Die StudentsPage enthält eine Liste von Studenten vom Typ TreeView, außerdem noch verschiedene Buttons. Siehe dazu: Bild im Anhang.
Nun ist es so, dass wir diese Liste StudentsView genannt haben. Dazu existiert noch ein StudentsModel, welches das StudentsView mit Daten füllt.
Soweit so gut. Aber jetzt kommt das Problem:
Eigentlich müsste doch die StudentsPage der Controller sein, also ausschließlich die Steuerung übernehmen. Aber dann würde ja die Anzeige von Buttons fehlen, weil wir ja dafür kein View haben, da unser View ja nur die Liste an sich ist. Außerdem werden die Buttons und die Liste in der StudentPage angeordnet.
Aber dann sind ja die Steuerung und die Anzeige der GUI-Elemente nicht sauber voneinander getrennt, weil im Controler Dinge sind, die eigentlich ins View gehören ... ?
Oder habe ich etwas falsch verstanden?
Unsere StudentsView macht eigentlich nicht viel Besonderes, ich weiß nicht ob es überhaupt nötig ist, diese Klasse zu haben, da es prinzipiell nur eine normale TreeView ist, die im Konstruktor ein paar Einstellungen vornimmt.
Wäre es da nicht besser, die StudentsView so wie sie jetzt ist komplett zu löschen und dafür eine neue StudentsView anzulegen, die sich komplett um die Darstellung des GUIs kümmert und in der StudentsPage nur die Steuerung zu haben?
Bin dankbar für jede Antwort.
Gruß
Ich wollte einmal fragen, wie wir unser Projekt nach dem Model-View-Controller Prinzip in QT am Besten strukturieren können.
In QT ist es ja so, dass es verschiedene Views gibt, wie z.B. TreeView oder TableView. Diese werden von einem Model mit Daten versorgt.
Bei unserem Projekt ist es jetzt so, dass wir erstmal ein MainWindow haben. Dieses beinhaltet die Toolbars und die Menüs und eine Status-Leiste.
In diesem MainWindow sind nun gestapelte Layouts mit einem widgetStack realisiert. Je nachdem, was der Benutzer gerade macht wird die entsprechende Page aufgerufen.
Hier mal exemplarisch skizziert für die Seite "Studenten bearbeiten":
Benutzer -> MainWindow -> StudentsPage
Die StudentsPage enthält eine Liste von Studenten vom Typ TreeView, außerdem noch verschiedene Buttons. Siehe dazu: Bild im Anhang.
Nun ist es so, dass wir diese Liste StudentsView genannt haben. Dazu existiert noch ein StudentsModel, welches das StudentsView mit Daten füllt.
Soweit so gut. Aber jetzt kommt das Problem:
Eigentlich müsste doch die StudentsPage der Controller sein, also ausschließlich die Steuerung übernehmen. Aber dann würde ja die Anzeige von Buttons fehlen, weil wir ja dafür kein View haben, da unser View ja nur die Liste an sich ist. Außerdem werden die Buttons und die Liste in der StudentPage angeordnet.
Aber dann sind ja die Steuerung und die Anzeige der GUI-Elemente nicht sauber voneinander getrennt, weil im Controler Dinge sind, die eigentlich ins View gehören ... ?
Oder habe ich etwas falsch verstanden?
Unsere StudentsView macht eigentlich nicht viel Besonderes, ich weiß nicht ob es überhaupt nötig ist, diese Klasse zu haben, da es prinzipiell nur eine normale TreeView ist, die im Konstruktor ein paar Einstellungen vornimmt.
Wäre es da nicht besser, die StudentsView so wie sie jetzt ist komplett zu löschen und dafür eine neue StudentsView anzulegen, die sich komplett um die Darstellung des GUIs kümmert und in der StudentsPage nur die Steuerung zu haben?
Bin dankbar für jede Antwort.
Gruß