我正在使用.xrc文件来设置我的wxWidgets GUI。 For most GUI elements I can specify <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
?
答案 0 :(得分:3)
快速入侵:将sizer嵌套在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);
就是这样。重建lib,现在你可以在sizer上指定<hideitems>1</hideitems>
,这意味着它将被隐藏所有项目。
这将处理除wxStdDialogButtonSizer
之外的所有sizer,它们具有单独的代码。我使用XRC示例对wxBoxSizer
和wxStaticBoxSizer
进行了测试。我想我会发送拉动请求将此功能添加到wx;与此同时,如果有人可以使用更大的应用程序对此进行更多测试,那就太棒了。
答案 1 :(得分:2)
目前无法在XRC中隐藏sizer,您可以做的最好是从代码中调用wxSizer::ShowItems()。支持隐藏的&#34;可能是有意义的。虽然它可能被称为其他东西以避免产生错误的印象,即sizer是windows(他们不是这样)。
顺便说一句,如果你试图validate你的XRC,你会发现&#34;隐藏&#34;这里不允许使用元素。