我的wxWidgets基于框架的应用程序是否需要顶级sizer?

时间:2015-09-07 06:49:40

标签: c++ user-interface wxwidgets

我正在接受关于wxWidgets的一些教程,发现我必须在我的主框架中添加wxPanel才能获得类似Windows的本机背景,而不是丑陋的背景它默认为暗灰色。

现在,WxSmith tutorial: Hello world声明wxBoxSizer是应该添加到主框架的第一个控件。然后是wxPanel,然后是另一个 sizer,我将放置我的控件(文本,按钮等)。

我没有理解第一个sizer的必要性。对我来说,拥有以下层次结构更有意义:框架 - >面板 - > Sizer - >控件。

所以,我是否真的需要在我的框架中添加顶级sizer,面板之前

注意:wxPanel的唯一目的是让我的窗口呈现浅灰色背景。

编辑事实上,如果面板是第一个也是唯一的子控件,我只能得到我想要的东西(整个窗口的浅色背景颜色)。

1 个答案:

答案 0 :(得分:3)

不,您不需要为面板设置sizer,因为wxFrame会自动调整其子项的大小以填充其整个客户区域,因为它是这样的一个常见的案例。

wxPanel的目的不仅仅是为了提供正确的&#34;背景,还可以在控件之间提供正确的键盘导航。它与wxFrame分离的原因是某些帧不包含控件,但用作例如<div id="infobox"></div> 。画布,在这种情况下,小组是不必要的。

最后,不要混淆:sizer是不是控件,它们与一个窗口关联,反过来包含(部分)窗口子窗口,但不是控件本身