Как установить минимальный размер окна в wxWidgets?

Это иерархия виджетов, которые у меня есть:

Frame> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer (2 столбца, 9 строк), с различными полями формы и кнопками внутри.

Первый BoxSizer предназначен для размещения панели, а второй - для создания границы вокруг FlexGrid.

Все выглядит хорошо, и рамка может правильно расширяться, если окно увеличивается, но его также можно изменить практически до нуля, скрывая все элементы формы.

Как сделать так, чтобы минимальный размер окна соответствовал тому, который предлагается по умолчанию в FlexGridSizer (все элементы формы видимы и имеют минимально возможные размеры)?

4 ответа

Решение

Использование метода SetMinSize() в вашем фрейме для установки минимального размера установит ограничение на наименьшую область фрейма (только что проверил). После установки wxWidgets не позволит размер кадра меньше указанного значения.

Я бы установил значение, как это. В конструкторе настройте все элементы фрейма. В конце после звонка Layout() метод для настройки всех размеров и так далее, вызовите GetSize(int *w, int *h) метод, чтобы получить размер х и у вашего кадра в макете по умолчанию. Используйте эти значения для вызова SetMinSize() метод, чтобы установить этот размер по умолчанию в качестве минимального для вашего кадра. Это будет принимать во внимание все различные отступы и границы и такие, которые установлены рамкой и содержащимися элементами.

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

В wxPerl ответ dagorym может быть записан кратко, как$self->SetMinSize($self->GetSize()); после звонка Layout(),

Я бы попытался вызвать wxFrame->SetMinSize(wxSize) с тем, что возвращает wxFlexGridSizer->GetMinSize(), должно работать, но не проверено. Вы должны будете отметить, что GetMinSize говорит о покрытии до размера окна, прежде чем передать его, я ожидаю.

Другие вопросы по тегам