Widgets
Os aplicativos gtkmm consistem de janelas contendo widgets (componentes), como botões e caixas de texto. Em alguns outros sistemas, widgets são chamados de "controles". Para cada widget em janelas do seu aplicativo, há um objeto C++ em seu código. Então você precisa chamar um método da classe do widget para afetar o widget visível.
Widgets são organizados dentro de widgets contêneires tais como molduras (frames) e cadernos (notebooks), em uma hierarquia com widgets dentro de widgets. Alguns widgets contêineres, como o Gtk::Grid, não são visíveis, eles só existem para organizar outros widgets. Aqui está um código de exemplo que adicionar 2 widgets Gtk::Button a um widget contêiner Gtk::VBox:
m_caixa.pack_start(m_Botao1); m_caixa.pack_start(m_Botao2);
m_moldura.add(m_caixa);
A maioria dos capítulos deste livro trata de widgets específicos. Veja a seção Widgets contêineres para mais detalhes sobre a adição de widgets a widgets contêineres.
Embora você possa especificar a disposição e a aparência das janelas e widgets com o código C++, você provavelmente achará mais conveniente projetar suas interfaces com o usuário com Glade e carregá-las em tempo de execução com o Gtk::Builder. Veja o capítulo Glade e Gtk::Builder.
Embora as instâncias de widgets gtkmm tenham tempo de vida e escopo como qualquer outra classe C++, o gtkmm tem um recurso poupador de tempo opcional que você verá em alguns exemplos. Gtk::manage() permite que você diga que um widget filho pertence ao contêiner em que você o colocou. Isso permite que você crie um novo (new) widget, adicione-o ao contêiner e esqueça sobre sua exclusão. Você pode aprender mais sobre as técnicas de gerenciamento de memória do gtkmm no capítulo de Gerenciamento de memória.