我正在使用.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

最佳答案

快速破解:将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);

而已。重建库,现在您可以在sizer上指定<hideitems>1</hideitems>,这意味着将在隐藏所有项目的情况下创建它。

这将处理除wxStdDialogButtonSizer之外的所有大小调整器,后者具有单独的代码。我使用XRC示例对其进行了wxBoxSizerwxStaticBoxSizer的测试。我想我将发送拉取请求以将此功能添加到wx。同时,如果有人可以使用更大的应用程序对此进行更多测试,那就太好了。

关于c++ - 使用XRC在wxWidgets中隐藏sizer及其所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32697966/

10-08 23:43