我是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
答案 0 :(得分:0)
不幸的是,DialogBlocks确实不允许你指定这个标志。没有它,你需要在显示以前隐藏的控件后调用Layout()
。如果你在父母身上调用它有足够的空间来容纳现在需要更多空间的孩子(例如在顶级父母上调用它将始终有效),这将有效,但是会导致控件明显移动,这可能不是你的想。