我是wxWidgets
和的新手DialogBlocks
。我有一个使用 DialogBlocks 创建并保存为 XRC 文件的表单。表单的一部分有一个垂直方向wxStaticBoxSizer
,其中放置了两个wxScrolledWindow
元素。我想根据要向用户显示的数据一次只显示一个,因此我将一个标记为隐藏,而将另一个标记为可见。当我尝试切换显示并显示隐藏在 XRC 中的小部件并隐藏未隐藏的小部件时,我隐藏的小部件消失得很好,但我想要显示的小部件不可见。但是,如果我调整窗口大小,它会出现。一旦它出现,我就可以毫无问题地来回切换。我尝试了许多显示、启用、无效、获取大小和调用的组合RecalcSizes
、刷新、布局等。我也尝试了不同的组合。简单地调用Show
将允许我在两者之间切换,但只有在我切换到最初不显示的那个并调整窗口大小之后。从我在文档中看到的。问题是它wxSizer
没有为隐藏窗口分配空间,但是可以设置一个标志来覆盖该行为。我的问题是 DialogBlocks 没有公开该功能,因此如果我手动编辑 XRC 文件,当我或其他开发人员之一保存一些更改时,修改将丢失。我可以进行一系列调用来告诉 sizer 分配空间吗?默认OnResize
处理程序会执行某些操作以使 sizer 分配空间,但我不知道那是什么,也不知道该怎么做。
这是我在文档中找到的标志:
wxRESERVE_SPACE_EVEN_IF_HIDDEN 通常 wxSizer 不会为隐藏窗口或其他项目分配空间。此标志覆盖此行为,以便为窗口分配足够的空间,即使它不可见。例如,这使得动态显示和隐藏控件成为可能,而无需调整父对话框的大小。此功能是 wxWidgets 2.8.8 版本以来的新功能