我的 wxWidgets 基于框架的应用程序需要一个顶级的 sizer 吗?
Do I need a top-level sizer on my wxWidgets frame-based app?
我正在学习一些关于 wxWidgets 的教程,发现我必须添加一个 wxPanel
到我的主 frame 以获得 Windows原生般的背景,而不是它默认的丑陋的深灰色。
现在,WxSmith tutorial: Hello world 指出 wxBoxSizer
是应该添加到主框架的第一个控件。然后是 wxPanel
,然后是 另一个 sizer,我将在其中放置我的控件(文本、按钮等)。
我无法理解第一个 sizer 的必要性。对我来说,具有以下层次结构更有意义:Frame -> Panel -> Sizer -> Controls.
那么,我真的需要在我的框架中添加一个顶级 sizer,在 面板之前吗?
注意:wxPanel
的唯一目的是为我的 window 提供浅灰色背景。
Edit 事实上,如果面板是框架的第一个也是唯一的子控件,我只会得到我想要的(整个 window 的浅色背景)。
不,您不需要面板的 sizer,因为 wxFrame
自动调整它的大小 只有 child 来填充它的整个客户区域,只是因为这种情况很常见。
wxPanel
的目的不仅是为您提供 "correct" 背景,而且还为您的控件提供正确的键盘导航。它与 wxFrame
分离的原因是某些框架不包含控件,但用作例如画布,在这种情况下面板将是不必要的。
最后,不要混淆:sizer 是 不是 控件,它们与 window 相关联,并且反过来包含(某些)window child人,但不自控。
我正在学习一些关于 wxWidgets 的教程,发现我必须添加一个 wxPanel
到我的主 frame 以获得 Windows原生般的背景,而不是它默认的丑陋的深灰色。
现在,WxSmith tutorial: Hello world 指出 wxBoxSizer
是应该添加到主框架的第一个控件。然后是 wxPanel
,然后是 另一个 sizer,我将在其中放置我的控件(文本、按钮等)。
我无法理解第一个 sizer 的必要性。对我来说,具有以下层次结构更有意义:Frame -> Panel -> Sizer -> Controls.
那么,我真的需要在我的框架中添加一个顶级 sizer,在 面板之前吗?
注意:wxPanel
的唯一目的是为我的 window 提供浅灰色背景。
Edit 事实上,如果面板是框架的第一个也是唯一的子控件,我只会得到我想要的(整个 window 的浅色背景)。
不,您不需要面板的 sizer,因为 wxFrame
自动调整它的大小 只有 child 来填充它的整个客户区域,只是因为这种情况很常见。
wxPanel
的目的不仅是为您提供 "correct" 背景,而且还为您的控件提供正确的键盘导航。它与 wxFrame
分离的原因是某些框架不包含控件,但用作例如画布,在这种情况下面板将是不必要的。
最后,不要混淆:sizer 是 不是 控件,它们与 window 相关联,并且反过来包含(某些)window child人,但不自控。