Designvorschlag: Wie mache ich mich von einer GUI unabhängig?



  • Hallo,

    ich möchte gerne meine Programme so entwickeln das ich nur C++ STL und Boost einsetze aber von der GUI unabhängig bleibe. Ich würde also z.B. ein Wrapper um alle GUI Funktionen schreiben und dann ja nach Anforderung mit QT, wxWidgets X11, WinAPI, FLTK etc. koppeln.

    Wie würdet ihr das am besten angehen, also in Bezug auf Controls, Events, etc..? Habt ihr da einen schönen Designvorschlag für mich?

    Mein Ziel ist halt GUI anzubieten aber unabhängig von einer bestimmten Implementierung zu bleiben.



  • Das kommt (wie immer) ganz drauf an. Ist dein Gui-unabhängiger Datenpart wirklich eine reine passive Datenhaltung, dann brauchts eigentlich gar keine Wrapper - du würdest die Klasse genauso auch mit Qt/... schreiben, mit dem Unterschied, dass jetzt std::string statt QString dasteht, intern statt QList<Type*> ein boost::ptr_vector (oder was auch immer) verwendet wird, usw.

    Wird die Datenhaltung selber "aktiv", gibt also Laut, wenn sich was ändert, setzt du in diesem Datenpart entweder auf einfache Callbacks, oder verwendest gleich libsigc++/boost.signals. Wenn du in Qt deine Events rein mit QT-SIGNALS/SLOTS verwalten willst, brauchst du eine schlanke Wrapper-Klasse, die auf ein boost::signal mit einem Qt-SIGNAL reagiert.

    Willst du deine Datenklassen für Qt-Streams verwendbar machen, reicht ein Überladen von operator<<(QDataStream&, const MyType&).

    U.

    S.

    W.

    :p


Anmelden zum Antworten