2009-03-04 104 views
8

这是我有小部件的层次结构:如何在wxWidgets中设置最小窗口大小?

帧> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer(2列,9行),与各色表单字段和按钮内部。

第一个BoxSizer是放置面板,第二个是围绕FlexGrid制作边框。

一切看起来不错,如果窗口放大,框架可以正常扩展,但它也可以调整大小几乎没有,隐藏所有表单元素。

如何强制窗口的最小尺寸默认为FlexGridSizer建议的尺寸(所有窗体元素都可见并且尺寸尽可能小)?

回答

6

在您的Frame上使用SetMinSize()方法设置最小尺寸将设置框架的最小区域的限制(只是测试它)。一旦设置,wxWidgets将不允许帧的大小小于指定的值。

我会设置这样的值。在构造函数中,设置框架的所有元素。最后,在调用Layout()方法来设置所有sizer等之后,请调用GetSize(int *w, int *h)方法以默认布局获取帧的x和y大小。使用这些值调用SetMinSize()方法将该默认大小设置为帧的最小值。这将考虑到所有各种填充和边界,以及框架和包含的元素的设置。

2

在wxPerl中,dagorym的答案可以简写为 $self->SetMinSize($self->GetSize());在致电Layout()之后。

12

可能太晚了,但这里给出的答案是不必要的复杂的,你只需要调用SetSizerAndFit(sizer)来将sizer与框架相关联,设置它的初始大小并将此大小设置为最小可接受大小。

+1

为了您的答案不会太晚! – dolmen 2014-10-02 16:03:13

相关问题