Widgety

Aplikace vytvoření pomocí gtkmm jsou tvořené okny obsahujícími widgety, jako jsou tlačítka nebo textová pole. V některých jiných systémech se widgety nazývají „ovládací prvky“. Ke každému widgetu v oknech aplikace existuje objekt C++ ve vašem aplikačním kódu. Pro dosažení vizuálních projevů widgetu vám stačí volat metody třídy widgetu.

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);

Většina kapitol v této knize se zabývá konkrétními widgety. Více informací o přidávání widgetů do kontejnerového widgetu najdete v kapitole Kontejnerové widgety.

Ačkoliv můžete rozvržení a vzhled okna a widgetů určit přímo v kódu C++, asi shledáte pohodlnějším navrhovat uživatelská rozhraní pomocí aplikace Glade a pak je načítat za běhu pomocí Gtk::Builder. Viz kapitola Glade a 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.