wxWidgets viele Vererbungen nur für OnButtonClick Event, wozu?



  • Guten Tag,

    ich benutze Code::Blocks + wxWidgets mit dem wxFormBuilder (Code-Generierung). Um nur ein OnButtonClick Event programmieren zu können legt der wxFormBuilder mir viele Unterklassen an. Beispiel mit Originalnamen: MyFrame1 erbt von wxFrame, dann erbt MyProject1MyFrame1 von MyFrame1 und dann muss von MyProject1MyFrame1 noch ein Object beispielsweise mit dem Namen frame erzeugt werden. Die OnButtonClick Events können erst in der Klasse MyProject1MyFrame1 implementiert werden. Für mich machen diese vielen Vererbungen keinen Sinn und die vielen Namensgebungen sind nur verwirrend.
    Wieso kann ich nicht MyFrame1 von wxFrame erben lassen und direkt in MyFrame1 die OnButtonClicks implementieren? Oder ist das irgendwie möglich? Wenn ja, würde ich mich auf ein Beispiel freuen bzw. wissen wollen, wie das mit dem wxFormBuilder automatisiert funktioniert.

    Mit freundlichen Grüßen,
    DarkBug



  • Die CodeGenerierung verwende ich überhaupt nicht.
    Benutz lieber wxRC, das ist intuitiver und man kann die UI verändern ohne alles neu kompilieren zu müssen.
    Und spart eben auch genau diese Vererbungen und Code-Wirr-Warr.



  • Der vom wxFormBuilder mit ausgegebene Code "event.Skip();" war Schuld. Nachdem ich diesen Codeteil entfernt hatte, konnte ich meine OnButtonClick Events direkt in der Klasse MyFrame1 implementieren.

    Wie funktioniert denn die wxRC-Variante bzw. was hat diese für Vor- oder auch Nachteile?



  • Nachteil wäre nur dass man die UI auch von Userseite aus tweaken könnte.
    Vorteil, wie gesagt compiletime und dass auch icons mit in das Archiv vom wxRC übernommen werden.
    Controls und Events können über das Macro XRCID("name") angesprochen werden.
    http://docs.wxwidgets.org/stable/wx_xrcoverview.html



  • Danke, aber ich bleibe erstmal bei der Code-Generierung. Ich möchte nicht, das der User die UI verändern kann. Mit Wegfall der Klasse MyProject1MyFrame1 gibt es jetzt ja nur noch eine Vererbung und diesen Code finde ich eigentlich recht übersichtlich.


Anmelden zum Antworten