hallo leute,
ich schreibe gerade eine applikation mit dem qt framework und versuche das fundament als mvc/mvp zu realisieren. ich habe ein kleines beispiel implementiert und möcht nun von euch wissen, ob ich richtig oder falsch liege.
im model wird der string angelegt, soll also nur eine triviales beispiel für einen datenbezug darstellen und kann per getMethode erreicht werden.
in der view wird per set Methode ins textEdit geschrieben.
da qt nach erstellung einer form den erzeugten quellcode in einer seperaten datei ablegt, in diesem fall ui_view.h, muss ich erstmal per get an das textEdit rankommen, um dann damit arbeiten zu können.
der controller legt 2 instanzen an, das model und das view. der controller ist also das verbindungsstück zwischen model und view. model und view kennen sich nicht !
std main fkt um die applikation zu starten
.................................................. ....
weitere überlegungen :
mein beispiel hat nur ein anzeigelement, das textEdit, sollte es aber mal eingabeelemente geben so müsste nach meiner überlegung nach einer eingabe das view ein signal an den controller senden, der dann wiederum die eingebenen daten an das model weiterreicht.
mfg
marvel
ich schreibe gerade eine applikation mit dem qt framework und versuche das fundament als mvc/mvp zu realisieren. ich habe ein kleines beispiel implementiert und möcht nun von euch wissen, ob ich richtig oder falsch liege.
Code:
model.h: #ifndef MODEL_H #define MODEL_H #include <QObject> #include <QString> class Model : public QObject { public: Model(); QString* getString(); private: QString string; }; #endif // MODEL_H model.cpp: #include "model.h" Model::Model() { string = "Hallo Welt!"; } QString* Model::getString() { return &string; }
Code:
view.h: #ifndef VIEW_H #define VIEW_H #include "ui_view.h" class View : public QMainWindow { Q_OBJECT public: View(QWidget *parent = 0); QTextEdit* getTextEdit(); void setTextEdit(QString *string); private: Ui::View m_ui; }; #endif // VIEW_H view.cpp: #include "view.h" View::View(QWidget *parent): QMainWindow(parent) { m_ui.setupUi(this); } QTextEdit* View::getTextEdit() { return m_ui.textEdit; } void View::setTextEdit(QString *string) { getTextEdit()->setText(*string); }
da qt nach erstellung einer form den erzeugten quellcode in einer seperaten datei ablegt, in diesem fall ui_view.h, muss ich erstmal per get an das textEdit rankommen, um dann damit arbeiten zu können.
Code:
controller.h: #ifndef CONTROLLER_H #define CONTROLLER_H #include <QObject> #include <QApplication> #include "model.h" #include "view.h" class Controller : public QObject { public: Controller(); void initialize(); private: Model *model; View *view; }; #endif // CONTROLLER_H controller.cpp: #include "controller.h" Controller::Controller() { model = new Model(); view = new View(); } void Controller::initialize() { view->setTextEdit(model->getString()); view->show(); }
Code:
#include <QApplication> #include "controller.h" int main( int argc, char* argv[]) { QApplication a(argc, argv); Controller *c = new Controller(); c->initialize(); return a.exec(); }
.................................................. ....
weitere überlegungen :
mein beispiel hat nur ein anzeigelement, das textEdit, sollte es aber mal eingabeelemente geben so müsste nach meiner überlegung nach einer eingabe das view ein signal an den controller senden, der dann wiederum die eingebenen daten an das model weiterreicht.
mfg
marvel