Существуют два типа контейнерных виджетов в Gtk+. Все они являются подклассами абстрактного GtkContainer. Первый тип контейнерных виджетов является наследником GtkBin, а другой является абстрактным базовым классом. Наследники GtkBin могут содержать в себе только один дочерний виджет; эти контейнеры добавляют некоторую функциональность ребенку. Например, GtkButton является GtkBin'ом, который превращает ребенка в нажимаемую кнопку. GtkFrame -- это GtkBin, который рисует рельефную рамку вокруг ребенка. GtkWindow позволяет ребенку появляться в окне верхнего уровня.
Второй тип контейнерных виджетов часто имеет GtkContainer прямым родителем. Эти контейнеры могут содержать больше одного ребенка, и их предназначение -- управлять раскладкой. Управлять раскладкой -- это значит, что эти контейнеры присваивают размеры и положение виджетам, которых они содержат. Например, GtkVBox размещает своих детей в вертикальную стопку. GtkFixed позволяет вам расположить детей в произвольных координатах. GtkPacker дает вам управление раскладкой в стиле Tk.
Эта глава о втором типе контейнеров. Для того, чтобы произвести требуемую вам раскладку без фиксирования любых размерв, вы должны понимать, как их (контейнеры) использовать. Цель заключается в том, чтобы не делать предположений о размерах окна и экрана, вида виджетов, шрифтов и т.п. Ваше приложение автоматически адаптируется при изменении этих факторов.