[GTKmm] Problem beim Label hinzufügen



  • Hallo erstmal,

    ich hab ein Programm das sieht folgendermaßen aus:
    http://www.fv-24.de/screenshot_mst-ng.png

    Bei diesem wird der Organizer Tab folgendermaßen gebildet:

    // Organizer Tab //
    Gtk::VBox *orga_tab;
    Gtk::HBox *orga_calendar_container;
    Gtk::Calendar *orga_calendar;
    void on_calender_date_selected();
    Gtk::VBox *orga_result;
    Gtk::ScrolledWindow *orga_result_scroll;
    // Organizer Tab End //
    
    /*** Organizer Tab ***/
      orga_tab = new Gtk::VBox(false, 5); // General container for the content of the Tab
      orga_calendar_container = new Gtk::HBox(false, 0); // Container for the Calendar
      orga_calendar = new Gtk::Calendar(); // the Calendar
      orga_calendar_container->pack_start(*orga_calendar, Gtk::PACK_EXPAND_PADDING, 5);
    
      Gtk::Label *test = new Gtk::Label("Test", 0, 0);
      Gtk::EventBox *test_box = new Gtk::EventBox(); // EventBox for the Label
      test_box->modify_bg(Gtk::STATE_NORMAL, Gdk::Color("#ffffb5")); // Set a backgroundcolor for the Label/EventBox
      test_box->add(*test);
    
      orga_result = new Gtk::VBox(); // a VBox for the Label/EventBox
      orga_result->pack_start(*test_box, Gtk::PACK_EXPAND_WIDGET, 0); // set a HPadding for the Label/EventBox
    
      orga_result_scroll = new Gtk::ScrolledWindow();
      orga_result_scroll->set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC);
      orga_result_scroll->set_shadow_type(Gtk::SHADOW_NONE);
      orga_result_scroll->add(*orga_result);
    
      orga_tab->pack_start(*orga_calendar_container, Gtk::PACK_SHRINK, 5); // add Calendar
      orga_tab->pack_start(*orga_result_scroll, Gtk::PACK_EXPAND_WIDGET, 5); // add Label for the results
    

    Nun hab ich ein Event darauf gelegt, dass das Datum im Kalender verändert wird.
    In diesem Event soll ein weiteres Label hinzugefügt werden. Folgender Code:

    guint year;
    guint month;
    guint day;
    orga_calendar->get_date(year, month, day); 
    month++;
    
    vector<int> result_array = organizer->getDates(day, month, year);
    
    std::cout << "test1" << std::endl; // DEBUG
    Gtk::Label *blubb = new Gtk::Label("Tdfdsfsdf", 4, 2);
    Gtk::EventBox *blubb_box = new Gtk::EventBox(); // EventBox for the Label
    blubb_box->modify_bg(Gtk::STATE_NORMAL, Gdk::Color("#ffffb5")); // Set a backgroundcolor for the Label/EventBox
    blubb_box->add(*blubb);
    orga_result->pack_end(*blubb_box, Gtk::PACK_EXPAND_WIDGET, 0);
    std::cout << "test2" << std::endl; // DEBUG
    

    Hier sind eigentlich nur die Zeilen ab dem "test1" interessant, denn diese haben keine Wirkung. Es kommt auch keine Errormeldung. Jemand eine Idee warum dies so ist? Liegts an dem ScrolledWindow oder an den EventBoxen für die Farbe?

    MfG
    Es_lebt



  • Was bedeutet der Parameter 0 am Ende von

    orga_result->pack_end()
    

    ? (Bin zu faul nachzuschauen)

    Ansonsten könntest du mal

    orga_result->show_all_children()
    

    aufrufen.



  • Die 0 am Ende ist der Platz der um das Widget gelassen werden soll.

    Und

    orga_result->show_all_children()
    

    hat das Problem gelöst, danke! (Auf die einfachsten Lösungen zu kommen dauert immer am längsten 😉


Anmelden zum Antworten