2009-03-04 103 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

相關問題