我正在使用一个.xrc文件来设置我的wxWidgets GUI。对于大多数 GUI 元素,我可以指定<hidden>1</hidden>
并且不会绘制元素。
我想要的是能够隐藏我的wxStaticBoxSizer
,让它和它的内容不被绘制。
它的设置如下,但添加<hidden>1</hidden>
没有任何效果。静态框仍然像它包含的所有内容一样绘制。
<object class="wxStaticBoxSizer" name="wxID_ANY">
<orient>wxVERTICAL</orient>
<label>Flight Formation</label>
<object class="sizeritem">
<flag>wxGROW|wxALL</flag>
<border>10</border>
<option>1</option>
是否可以从 .xrc 文件中隐藏此wxStaticBoxSizer
?
快速技巧:将大小器嵌套在wxPanel
内并隐藏面板。
如果您愿意重建 XRC 库,这里有一个快速补丁,它将提供您需要的功能。
在src/xrc/xh_sizer.cpp
中,在wxSizerXmlHandler::Handle_sizer()
的正文中,在调用CreateChildren(parent, true/*only this handler*/);
后立即添加以下内容:
// This has to be done after CreateChildren().
if(GetBool(wxT("hideitems"), 0) == 1)
sizer->ShowItems(false);
就是这样。重新生成库,现在您可以在大小调整器上指定<hideitems>1</hideitems>
,这意味着它将在创建时隐藏其所有项目。
这将处理除 wxStdDialogButtonSizer
之外的所有大小器,它具有单独的代码。我使用 XRC 样本对其进行了 wxBoxSizer
和wxStaticBoxSizer
测试。我想我会发送一个拉取请求以将此功能添加到 wx;同时,如果有人可以使用更大的应用程序对此进行更多测试,那就太好了。
目前无法在XRC中隐藏大小器,您能做的最好的事情就是从代码中调用wxSizer::ShowItems((。将来支持大小器的"隐藏"属性可能是有意义的,尽管它可能应该被称为其他东西,以避免造成大小器是窗口的错误印象(它们不是(。
顺便说一句,如果您尝试验证您的 XRC,您会发现这里不允许使用"隐藏"元素。