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