GTK# - проблема с наложением компонентов при изменении размера

У меня есть панель, содержащая форму (такие элементы, как метки и текстовые поля в таблице) и 3 кнопки (в hbuttonbox) в правом нижнем углу. Если я укоротю панель, перетаскивая нижнюю границу вверх, вместе с ней появятся 3 кнопки, и они будут лежать поверх других компонентов формы, создавая грязную графику. Я бы хотел, чтобы размер панели не менялся меньше, чем нижний край последнего компонента внутри нее. Из-за ограничений работодателя я не могу показать скриншот GUI. Я постараюсь сделать любые уточнения, которые просят.

Вероятно, это как-то связано с некоторыми настройками изменения размера или общего размера компонентов, но вариантов так много, что я не уверен, с чего начать.

Любые идеи для легкого решения этого без погружения в сложное гнездо компонентов? Если нет, есть идеи о том, где я должен начать возиться с настройками?

Спасибо!

ОБНОВЛЕНИЕ: Все содержится в VBox с 3 ячейками. Элементы в ячейках (сверху вниз): Таблица, ScrolledWindow, HButtonBox. При изменении размера нижний край ScrolledWindow также перемещается (изменяет размеры) вместе с нижним краем панели, пока нижняя часть панели не окажется над всем ScrolledWindow. Затем кнопки продолжают двигаться вверх, оставаясь относительно нижнего края панели.

2 ответа

Решение

Я закончил тем, что добавил Запрос Высоты к контейнеру, только немного дольше, чем часть прокручиваемого окна. Теперь это перестает изменять размеры, чтобы нижние кнопки перекрывали компоненты над ним. Проблема (до исправления) показана ниже:

Панель обычного размера

Изменение размера с перекрытием

Под формой вы подразумеваете, что используете Gtk.Fixed содержать вашу таблицу и кнопку? Тогда, вероятно, именно это и происходит - вы должны использовать vbox и hbox для вашего макета. Они будут правильно изменять размер. Фиксированные макеты предназначены только для исключительных случаев.

РЕДАКТИРОВАТЬ:

Другие предложения:

  • Возможно, HButtonBox имеет тип пакета "конец" вместо "начало"?
  • Вы можете попробовать поиграть со свойствами упаковки 'fill' и 'expand' дочерних элементов VBox.
Другие вопросы по тегам