Как заставить виджет занимать все доступное место в Gtk.HBox

Я реализую собственный виджет Gtk#, основанный на Gtk.EventBox. Когда я вставляю его в HBox или VBox, он занимает точно такой же размер, который возвращается методом OnSizeRequested.

Как я могу заставить свой виджет занимать все пространство, отведенное ему родительским блоком, окном или виджетом? Как и HBox.


person ezpresso    schedule 20.12.2011    source источник


Ответы (2)


Существует небольшая разница между предпочтительным способом упаковки в GTK+2 и GTK+3. В GTK+ вы обычно используете свойства expand и fill объекта GtkBox для управления распределением пространства. С GTK+3 они предлагают пользователю vertical-expand, horizontal-expand, vertical-fill, horizontal-fill.

Хороший способ понять, как работает упаковка, — поиграть со свойствами заполнения и расширения с помощью Glade, чтобы вы могли видеть эффекты в режиме реального времени. В старом руководстве (слегка устаревшем) показаны скриншоты различных свойств упаковки: Как_Packing_Effects_the_Layout

Когда вы разрабатываете виджет, более вероятно, что пользователи вашего виджета определят, как он должен быть упакован в более крупный пользовательский интерфейс. Однако, если ваш виджет представляет собой составной виджет (созданный из других виджетов), вам нужно будет правильно упаковать другие виджеты.

person Micah Carrick    schedule 23.12.2011

PackStart и PackEnd имеют параметр заполнения для указания элементов, которые должны расширяться, чтобы заполнить поле. Вы, вероятно, хотите PackStart(widget, true, true, 0);

person mkestner    schedule 20.12.2011