Как сделать так, чтобы виджет занимал все доступное пространство в Gtk.HBox - PullRequest
0 голосов
/ 20 декабря 2011

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

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

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

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

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

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

0 голосов
/ 20 декабря 2011

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

...