/* Overlay * * Stack widgets in static positions over a main widget. */ #include class Example_Overlay : public Gtk::Window { public: Example_Overlay(); ~Example_Overlay() override; protected: // Widgets Gtk::TextView m_text_view; Gtk::ScrolledWindow m_scrolled_window; Gtk::Entry m_entries[9]; Gtk::Label m_labels[9]; // Containers Gtk::Overlay m_overlay; private: void configure_entries_and_labels(); }; //Called by DemoWindow; Gtk::Window* do_overlay() { return new Example_Overlay(); } Example_Overlay::Example_Overlay() { // Window properties set_default_size(450, 450); set_title("Overlay"); set_border_width(0); // Main text view m_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_scrolled_window.add(m_text_view); // Entries and labels configure_entries_and_labels(); // Layout m_overlay.add(m_scrolled_window); add(m_overlay); show_all_children(); } Example_Overlay::~Example_Overlay() { } void Example_Overlay::configure_entries_and_labels() { // We first set common attributes, and // add widgets to the overlay for (int i =0; i < 9; ++i) { m_labels[i].set_text("Hello world"); m_labels[i].set_margin_start(20); m_labels[i].set_margin_end(20); m_labels[i].set_margin_top(5); m_labels[i].set_margin_bottom(5); m_overlay.add_overlay(m_entries[i]); m_overlay.add_overlay(m_labels[i]); } // Then we set align attributes m_entries[0].set_halign(Gtk::ALIGN_END); m_entries[0].set_valign(Gtk::ALIGN_END); m_labels[0].set_halign(Gtk::ALIGN_END); m_labels[0].set_valign(Gtk::ALIGN_END); m_entries[1].set_halign(Gtk::ALIGN_START); m_entries[1].set_valign(Gtk::ALIGN_END); m_labels[1].set_halign(Gtk::ALIGN_START); m_labels[1].set_valign(Gtk::ALIGN_END); m_entries[2].set_halign(Gtk::ALIGN_END); m_entries[2].set_valign(Gtk::ALIGN_START); m_labels[2].set_halign(Gtk::ALIGN_END); m_labels[2].set_valign(Gtk::ALIGN_START); m_entries[3].set_halign(Gtk::ALIGN_START); m_entries[3].set_valign(Gtk::ALIGN_START); m_labels[3].set_halign(Gtk::ALIGN_START); m_labels[3].set_valign(Gtk::ALIGN_START); m_entries[4].set_halign(Gtk::ALIGN_END); m_entries[4].set_valign(Gtk::ALIGN_CENTER); m_labels[4].set_halign(Gtk::ALIGN_END); m_labels[4].set_valign(Gtk::ALIGN_CENTER); m_entries[5].set_halign(Gtk::ALIGN_START); m_entries[5].set_valign(Gtk::ALIGN_CENTER); m_labels[5].set_halign(Gtk::ALIGN_START); m_labels[5].set_valign(Gtk::ALIGN_CENTER); m_entries[6].set_halign(Gtk::ALIGN_CENTER); m_entries[6].set_valign(Gtk::ALIGN_START); m_labels[6].set_halign(Gtk::ALIGN_CENTER); m_labels[6].set_valign(Gtk::ALIGN_START); m_entries[7].set_halign(Gtk::ALIGN_CENTER); m_entries[7].set_valign(Gtk::ALIGN_END); m_labels[7].set_halign(Gtk::ALIGN_CENTER); m_labels[7].set_valign(Gtk::ALIGN_END); m_entries[8].set_halign(Gtk::ALIGN_CENTER); m_entries[8].set_valign(Gtk::ALIGN_CENTER); m_labels[8].set_halign(Gtk::ALIGN_CENTER); m_labels[8].set_valign(Gtk::ALIGN_CENTER); }