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 are arranged inside container widgets such as frames and notebooks, in a hierarchy of widgets within widgets. Some of these container widgets, such as Gtk::Grid, are not visible - they exist only to arrange other widgets. Here is some example code that adds 2 Gtk::Button widgets to a Gtk::Box container widget:

m_box.append(m_Button1);
m_box.append(m_Button2);
and here is how to add the Gtk::Box, containing those buttons, to a Gtk::Frame, which has a visible frame and title:
m_frame.set_child(m_box);

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.

Although gtkmm widget instances have lifetimes and scopes just like those of other C++ classes, gtkmm has an optional time-saving feature that you will see in some of the examples. The Gtk::make_managed() allows you to create a new widget and state that it will become owned by the container into which you place it. This allows you to create the widget, add it to the container and not be concerned about deleting it, since that will occur when the parent container (which may itself be managed) is deleted. You can learn more about gtkmm memory management techniques in the Memory Management chapter.