Enobjektsbehållare
De flesta behållarkomponenter för ett objekt har metoderna set_child() och unset_child() för den underordnade komponenten. Gtk::Button och Gtk::Window är tekniskt sett enobjektsbehållare, men vi har redan diskuterat dem på annat håll.
Vi kommer också diskutera komponenten Gtk::Paned som låter dig dela ett fönster i två separata ”paneler”. Denna komponent kommer faktiskt innehålla två underordnade komponenter, men antalet är fast så det verkar lämpligt.
Paned
Paneler delar en komponent i två halvor, separerade av en flyttbar avskiljare. De två halvorna (panelerna) kan orienteras antingen horisontellt (sida vid sida) eller vertikalt (en ovanpå den andra).
Till skillnad från de andra komponenterna i detta avsnitt innehåller panelkomponenter inte en utan två underordnade komponenter, en i varje panel. Du ska därför använda set_start_child() och set_end_child() i stället för en set_child()-metod.
Du kan justera avskiljarens position genom att använda metoden set_position(), och kommer troligen behöva göra det.
Exempel
ScrolledWindow
ScrolledWindow-komponenter skapar ett rullningsbart område. Du kan infoga en komponent av valfri typ i ett ScrolledWindow, så kommer den vara åtkomlig oavsett dess storlek genom att använda rullningslisterna. Observera att ScrolledWindow inte är ett Gtk::Window trots det något missvisande namnet.
Scrolled windows have scrollbar policies which determine whether the Scrollbars will be displayed. The policies can be set with the set_policy() method. The policy may be for instance Gtk::PolicyType::AUTOMATIC or Gtk::PolicyType::ALWAYS. Gtk::PolicyType::AUTOMATIC will cause the scrolled window to display the scrollbar only if the contained widget is larger than the visible area. Gtk::PolicyType::ALWAYS will cause the scrollbar to be displayed always.
Exempel
Här är ett enkelt exempel som packar 100 växlingsknappar i ett ScrolledWindow. Försök ändra storlek på fönstret för att se hur rullningslisterna reagerar.
AspectFrame
AspectFrame-komponenten ser ut som en Frame-komponent, men den upprätthåller även bildförhållandet (kvoten mellan bredden och höjden) för den underordnade komponenten, och lägger till extra utrymme om nödvändigt. Exempelvis skulle detta låta dig visa ett foto utan att användaren kan förvränga det horisontellt eller vertikalt då storleken ändras.
Exempel
Följande program använder en Gtk::AspectFrame för att presentera en rityta vars bildförhållande alltid kommer vara 2:1, oavsett hur användaren ändrar storleken på toppnivåfönstret.
Andra enobjektsbehållare
Det finns andra enobjektsbehållare. Se referensdokumentationen för en fullständig lista. Här är länkar till några exempelprogram som visar behållare som inte nämns någon annanstans i denna handledning.