wxWidgets:wxSizer
wxWidgets:wxSizer
wxSizer 是用于在窗口中布置子窗口的抽象基类。
不能直接使用 wxSizer;相反,您将不得不使用从它派生的 sizer 类之一。目前有 wxBoxSizer、wxStaticBoxSizer、wxGridSizer、wxFlexGridSizer、wxWrapSizer 和 wxGridBagSizer。
wxWidgets 中sizer 使用的布局算法与其他GUI 工具包中的布局密切相关,例如Java 的AWT、GTK 工具包或Qt 工具包。它基于各个子窗口报告其最小所需大小以及如果父窗口的大小发生变化它们能够被拉伸的想法。
这通常意味着程序员在开始时不会设置对话框的原始大小,而是会为对话框分配一个 sizer,然后将询问该 sizer 的推荐大小。反过来,sizer 会查询它的孩子,可以是普通窗口、空白空间或其他sizer,这样就可以构建sizer 的层次结构。请注意,wxSizer不是从wxWindow派生的,因此不会干扰选项卡排序,与屏幕上的真实窗口相比,它需要的资源非常少。
使 sizers 非常适合在 wxWidgets 中使用的原因是每个控件都报告其自己的最小大小,并且该算法可以毫无问题地处理不同平台上字体大小或不同窗口(对话框项)大小的差异。例如,如果 Motif 小部件的标准字体和整体设计需