File: examplewindow.h
(For use with gtkmm 4)
#ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/dropdown.h> #include <gtkmm/stringlist.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); ~ExampleWindow() override; protected: // Signal handler: void on_dropdown_changed(); // Child widget: Gtk::DropDown m_DropDown; Glib::RefPtr<Gtk::StringList> m_StringList; }; #endif //GTKMM_EXAMPLEWINDOW_H
File: examplewindow.cc
(For use with gtkmm 4)
#include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() { set_title("DropDown example"); set_child(m_DropDown); // Fill the dropdown: const std::vector<Glib::ustring> strings{ "1 minute", "2 minutes", "5 minutes", "20 minutes" }; m_StringList = Gtk::StringList::create(strings); m_DropDown.set_model(m_StringList); m_DropDown.set_selected(0); // Connect signal handler: m_DropDown.property_selected().signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_dropdown_changed)); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_dropdown_changed() { const auto selected = m_DropDown.get_selected(); std::cout << "DropDown changed: Row=" << selected << ", String=" << m_StringList->get_string(selected) << std::endl; }
File: main.cc
(For use with gtkmm 4)
#include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char* argv[]) { auto app = Gtk::Application::create("org.gtkmm.example"); // Shows the window and returns when it is closed. return app->make_window_and_run<ExampleWindow>(argc, argv); }