我使用一个.xrc文件来设置wxWidgets图形用户界面。1和元素将不会被绘制。
我想要的是能够隐藏我的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>可以将这个wxStaticBoxSizer隐藏在.xrc文件中吗?
发布于 2015-09-23 13:11:04
快速黑客:在一个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);就这样。重新构建库,现在可以在sizer上指定<hideitems>1</hideitems>,这意味着它将被创建并隐藏其所有项。
这将处理除wxStdDialogButtonSizer之外的所有sizer,后者有单独的代码。我使用XRC示例测试了它的wxBoxSizer和wxStaticBoxSizer。我想我会发送一个请求,将这个特性添加到wx;同时,如果有人可以使用更大的应用程序对此进行更多的测试,那就太好了。
发布于 2015-09-22 21:26:52
目前无法在XRC中隐藏sizer,您能做的最好的就是从代码中调用wxSizer::ShowItems()。将来也应该支持sizer的“隐藏”属性,尽管它可能应该被称为其他的东西,以避免产生这样的错误印象,即sizer是窗口(而不是)。
顺便说一句,如果您尝试验证您的XRC,您就会发现这里不允许使用“隐藏”元素。
https://stackoverflow.com/questions/32697966
复制相似问题