gtkmm: Dialog problem



  • Servus Leute,

    bin in knapp 2 Jahren gtkmm jetzt nie in die Situation gekommen einen Dialog selber schreiben zu müssen, jetzt ist es soweit und die Klasse macht mir insofern Schwierigkeiten, weil er mich keine Widgets wie, in meinem Fall, ein Gtk::Label und ein Gtk:: Entry hinzufügen lässt.

    Auf der http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGtk_1_1Dialog.html wird's aber so (s.u.) empfohlen, oder sehe ich das falsch? Schließlich hat der Dialog ne VBox als direktes child und das hole ich mir ja mittels get_vbox(), bzw. nen Pointer darauf.

    Gtk::Entry my_entry;
    Gtk::Label my_label;
    my_label.set_label("bla bla bla");
    Gtk::Dialog dia("Dialog", *this, true, true);
    
    //Hier hakt's dann wohl!!
    (dia.get_vbox())->pack_start(my_label);
    (dia.get_vbox())->pack_start(my_entry);
    
    dia.add_button(Stock::OK, RESPONSE_OK);
    dia.show();
    

    Mir ist schon klar dass ich eigentlich ne Klasse von Gtk::Dialog ableiten sollte, aber auf die schnelle muss es dass tun.
    Thanks in advance.

    GPC



  • Also irgendwie weiß ich nicht wo dein Problem ist,
    Du musst mal genauer erzählen wo das Problem liegt ( bei der von dir benannten Zeile) (evtl ist deine GTKmm version auch zu alt.)

    Mir ist nur das aufgefallen:

    dia.add_button(Stock::OK, RESPONSE_OK);
    

    Nach dem bei dir alles andere Gtk:: prefixed war gehe ich mal davon aus das du
    kein using namespace Gtk; drin hast ( find ich gut 😉 )

    dia.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
    

    BR



  • Nabend,

    dir fehlt ein 'dia.show_all()'. Du musst ja die childs noch anzeigen.

    mfg
    v R



  • Hey,

    @evlissimo
    Das Problem besteht darin dass das Gtk::Label und das Gtk::Entry nicht angezeigt wurden, der Button aber schon.
    Und zum namespace: Ja, den lass ich immer draussen, machst du das auch so?
    //EDIT: Ich hab das aktuellste API drauf, keine Sorge.

    @virtuell Realisticer
    Danke dir, dachte mir schon halbwegs dass es so ein blöder Fehler ist.
    Hätte eigentlich auch selber drauf kommen können, schließlich ist am Ende
    meines Konstruktors der Gtk::Window Klasse auch ein

    show_all_children();
    

Log in to reply