Я использую файл .xrc для настройки моего графического интерфейса wxWidgets. Для большинства элементов графического интерфейса я могу указать <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>
Можно ли это скрыть? wxStaticBoxSizer
из файла .xrc?
Быстрый взлом: гнездо 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);
Вот и все. Перестройте библиотеку, и теперь вы можете указать <hideitems>1</hideitems>
на сортировщике, что означает, что он будет создан со всеми скрытыми элементами.
Это будет обрабатывать все размеры, кроме wxStdDialogButtonSizer
, который имеет отдельный код. Я проверил это для wxBoxSizer
а также wxStaticBoxSizer
используя образец XRC. Я думаю, что отправлю запрос на удаление, чтобы добавить эту функцию в wx; в то же время, если бы кто-нибудь мог провести еще какое-то тестирование с использованием более крупного приложения, это было бы здорово.
В настоящее время в XRC нет способа скрыть свой классификатор, лучше всего позвонить wxSizer :: ShowItems () из кода. Вероятно, в будущем было бы целесообразно поддерживать атрибут «скрытый» для классификаторов, хотя его, вероятно, следует называть как-нибудь иначе, чтобы не создавать ошибочное впечатление, что классификаторы — это окна (а они — нет).
Кстати, если вы пытались утверждать на вашем XRC вы бы узнали, что «скрытый» элемент здесь запрещен.