我正在接受关于wxWidgets的一些教程,发现我必须在我的主框架中添加wxPanel
才能获得类似Windows的本机背景,而不是丑陋的背景它默认为暗灰色。
现在,WxSmith tutorial: Hello world声明wxBoxSizer
是应该添加到主框架的第一个控件。然后是wxPanel
,然后是另一个 sizer,我将放置我的控件(文本,按钮等)。
我没有理解第一个sizer的必要性。对我来说,拥有以下层次结构更有意义:框架 - >面板 - > Sizer - >控件。
所以,我是否真的需要在我的框架中添加顶级sizer,在面板之前
注意:wxPanel
的唯一目的是让我的窗口呈现浅灰色背景。
编辑事实上,如果面板是第一个也是唯一的子控件,我只能得到我想要的东西(整个窗口的浅色背景颜色)。
答案 0 :(得分:3)
不,您不需要为面板设置sizer,因为wxFrame
会自动调整其仅子项的大小以填充其整个客户区域,因为它是这样的一个常见的案例。
wxPanel
的目的不仅仅是为了提供正确的"背景,还可以在控件之间提供正确的键盘导航。它与wxFrame
分离的原因是某些帧不包含控件,但用作例如<div id="infobox"></div>
。画布,在这种情况下,小组是不必要的。
最后,不要混淆:sizer是不是控件,它们与一个窗口关联,反过来包含(部分)窗口子窗口,但不是控件本身