使用 XRC 在 wxWidgets 中隐藏大小调整器及其所有内容
Hiding a sizer and all its contents in wxWidgets using XRC
我正在使用一个.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,您会发现这里不允许使用"隐藏"元素。
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- Linux的Cpp上的计时器
- 为char数组调整zlib-zpipe
- Ardunio UNO解决了多个重叠的定时器循环
- 提升 ASIO 无法识别计时器对象
- 如何在c++17中制作一个模板包装器/装饰器
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 调整大小后指向元素值的指针unordered_map有效?
- C++中带有List类的迭代器Segfault
- std::vector的包装器,使数组的结构看起来像结构的数组
- std::向量迭代器和调整大小/保留的奇怪/有趣行为
- 是否有提供可调整 dpi、可选文本和 CSS 支持的 HTML 到 PDF 渲染器?
- 设置可等待计时器和夏令时调整
- 为旧版本调整VS2010和VS6编译器和链接器开关
- OpenCV缝合器抛出调整大小错误
- 在wxGLCanvas上调整大小之前初始化着色器时出现问题
- 谷神星解算器的束调整
- 使用 XRC 在 wxWidgets 中隐藏大小调整器及其所有内容
- 调整自定义迭代器,以便(a?)reverse_iterator可以翻转其输出