Mein erster wxWidgets GUI Entwurf
-
Hallo Leute,
nachfolgend mein erster wxWidgets GUI Entwurf mit dem wxFormBuilder. Habe ich die richtigen Elemente verwendet, um die GUI so aussehen zu lassen, wie sie aussieht? Mal ganz davon abgesehen, was für eine banale Aufgabe das Programm hätte, hier ein Screenshot von der GUI:
http://www10.pic-upload.de/10.08.12/tprkvpm3gyr5.png
Mir kommt das ziemlich falsch vor, wenn ich allein auf die ganzen Panels gucke, die ich verwendet habe. Bitte zeigt mir den richtigen Weg auf, wie ich eine GUI mit dem wxFormBuilder genauso aussehen lasse. Über Object Trees würde ich mich freuen, muss aber nicht unbedingt sein.
Mit freundlichen Grüßen,
DarkBug
-
Da ist noch Platz für Optimierungen am aussehen, aber so ziemlich was du möchtest. Den ersten BoxSizer kannst weglassen, ich hatte den versehentlich genommen, aber der FlexGrid is dafür besser. War dann aber zu faul alles nochmal einzugeben :P. Sollte aber ja kein Problem darstellen :D.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1"> <object class="wxPanel" name="MyPanel1"> <style>wxTAB_TRAVERSAL</style> <size>500,300</size> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> <option>1</option> <flag>wxALL|wxEXPAND</flag> <border>5</border> <object class="wxFlexGridSizer"> <rows>3</rows> <cols>1</cols> <vgap>0</vgap> <hgap>0</hgap> <growablecols>0</growablecols> <growablerows>1,2</growablerows> <object class="sizeritem"> <option>0</option> <flag>wxALIGN_CENTER|wxALL|wxEXPAND</flag> <border>5</border> <object class="wxFilePickerCtrl" name="m_filePicker1"> <value></value> <message>Select a file</message> <wildcard>*.*</wildcard> <style>wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN</style> </object> </object> <object class="sizeritem"> <option>0</option> <flag>wxALL|wxEXPAND</flag> <border>10</border> <object class="wxButton" name="m_button2"> <label>Öffnen</label> <default>0</default> </object> </object> <object class="sizeritem"> <option>0</option> <flag>wxALL|wxEXPAND</flag> <border>10</border> <object class="wxButton" name="m_button1"> <label>Schliessen</label> <default>0</default> </object> </object> <object class="sizeritem"> <option>1</option> <flag>wxEXPAND</flag> <border>5</border> <object class="wxGridSizer"> <minsize>25,-1</minsize> <rows>0</rows> <cols>3</cols> <vgap>0</vgap> <hgap>0</hgap> <object class="spacer"> <option>1</option> <flag>wxEXPAND</flag> <border>5</border> <size>0,0</size> </object> <object class="spacer"> <option>1</option> <flag>wxEXPAND</flag> <border>5</border> <size>0,0</size> </object> <object class="sizeritem"> <option>1</option> <flag>wxALL|wxEXPAND</flag> <border>5</border> <object class="wxButton" name="m_button3"> <label>About</label> <default>0</default> </object> </object> </object> </object> </object> </object> </object> </object> </resource>
-
Danke für deine Antwort. Du benutzt als Hauptfenster ein Panel. Das kann ich nicht kompilieren, als Fehler bekomme ich:
http://www10.pic-upload.de/10.08.12/m2jsl8diqoi.png
Was mache ich falsch?
Ich verstehe die Logik von den Spacern nicht so ganz. Irgendwie reagiert auch kein Element auf andere Werte als die Standardwerte von width oder height.
Hier ein weiterer Versuch:
http://www7.pic-upload.de/10.08.12/h2uolho39x7v.png
Warum ist der Button ganz unten nicht auf der rechten Seite? Das Attribut orient des BoxSizers steht auf wxHORIZONTAL.
Kann man die Breite des Spacers nicht präzise einstellen? Das Attribut proportion verdoppelt die Größe ja direkt.Hier die Projektdatei:
http://www.mediafire.com/?zqw0pexix6pcwg0
-
Warum ist der Button ganz unten nicht auf der rechten Seite?
Weil du BoxSizer und keinen FlexGridSizer/GridSizer verwendet hast wie ich.
Kann man die Breite des Spacers nicht präzise einstellen? Das Attribut proportion verdoppelt die Größe ja direkt.
Doch kann man schon. In den Eigenschaften. Die Idee ist aber eben von diesen genauen Pixelangaben wegzukommen. Gib aber wenn schon lieber dem entsprechenden Control eine genaue Größe.
Du verwendest auch viel zu viele Sizer in deinem Versuch.
Du benutzt als Hauptfenster ein Panel. Das kann ich nicht kompilieren, als Fehler bekomme ich:
Das ist nicht mein Hauptfenster. Du kannst gerne einen wxFrame als Container nehmen, aber ich erzeuge den wxFrame in meinem Code und lad dort dann einfach das Panel rein. Finde ich besser, da ich dann die Events besser verbinden kann.
Und warum verwendest du keinen wxFilePicker? Da soll doch eh nen Dateiname in das wxTextControl oder?
-
Scorcher24 schrieb:
Warum ist der Button ganz unten nicht auf der rechten Seite?
Weil du BoxSizer und keinen FlexGridSizer/GridSizer verwendet hast wie ich.
Aber ist der BoxSizer nicht dazu da Controls direkt untereinander bzw. nebeneinander zu plazieren?
Habe ein bisschen herumprobiert: Wenn ich dem Attribut proportion des Buttons eine 1 gebe, akzeptiert er auch die Spacer davor und der Button wird auf die rechte Seite verschoben.Scorcher24 schrieb:
Kann man die Breite des Spacers nicht präzise einstellen? Das Attribut proportion verdoppelt die Größe ja direkt.
Doch kann man schon. In den Eigenschaften. Die Idee ist aber eben von diesen genauen Pixelangaben wegzukommen. Gib aber wenn schon lieber dem entsprechenden Control eine genaue Größe.
Wenn ich in den Eigenschaften width und height verändere, wird dieses einfach ignoriert. Du meinst ich soll das Attribut proportion des Controls verändern?
Die vielen Spacer sollen die Controls vom Rand wegdrücken.
-
*push*