我是wxWidgets和DialogBlocks的新手。我有一个使用DialogBlocks创建并保存为XRC文件的表单。表单的一部分具有垂直的wxStaticBoxSizer,其中放置了两个wxScrolledWindow元素。我想一次只显示一个数据,根据要显示给用户的数据,所以我有一个标记为隐藏,另一个是可见的。当我试图切换显示并显示隐藏在XRC中的小部件并隐藏不是的小部件时,我隐藏的小部件就会消失,但是我想要显示的小部件是不可见的。但是,如果我调整窗口的大小,它就会出现。一旦它出现了,我就可以在没有问题的情况下来回切换。我尝试了多种组合,包括显示、启用、无效、获取sizer和调用RecalcSizes、刷新、布局等。我也试过不同的组合。只需调用Show,我就可以在两者之间切换,但只在切换到最初不显示的窗口并调整窗口大小之后。从我在医生那里看到的。问题是wxSizer没有为隐藏窗口分配空间,但是可以设置一个标志来覆盖该行为。我的问题是,DialogBlocks没有公开这个特性,所以如果我手动编辑XRC文件,当我或其他开发人员保存一些更改时,修改将丢失。是否有一系列的呼叫,我可以告诉sizer分配空间?默认的OnResize处理程序会导致sizer分配空间,但我不知道这是什么,也不知道如何做。
这是我在文档中找到的标志:
wxRESERVE_SPACE_EVEN_IF_HIDDEN通常wxSizers不为隐藏窗口或其他项分配空间。此标志覆盖此行为,以便为窗口分配足够的空间,即使它是不可见的。例如,这样可以在不调整父对话框大小的情况下动态显示和隐藏控件。这个函数是新的,因为wxWidgets版本2.8.8
发布于 2012-10-25 22:55:48
不幸的是,DialogBlocks实际上不允许您指定此标志。没有它,您需要在显示以前隐藏的控件之后调用Layout()。如果您在有足够空间容纳现在需要更多空间的孩子(例如,在顶级家长上调用它将始终有效)的父母上调用它,但会导致控件明显地移动,而这可能不是您想要的,这将是有效的。
https://stackoverflow.com/questions/13072836
复制相似问题