Создание GroupBox с помощью _createChildControlImpl()
Я попытался создать групповое поле с _createChildControlImpl()
-Метод, но макет выглядит как дерьмо, как вы можете видеть ее http://tinyurl.com/odzgy3v
Но когда я реализую это без _createChildControlImpl()
это работает отлично: http://tinyurl.com/kwzvdm2
Кто-нибудь может сказать, пожалуйста, в чем причина этого? Заранее спасибо!
3 ответа
Взгляните на консоль вашего браузера - подсказка уже есть.
Когда вы вводите дочерние элементы управления, qooxdoo не может повторно использовать прежний внешний вид виджетов по умолчанию, поскольку идентификатор внешнего вида изменился (с "groupbox"
в "widget/groupBox"
). Таким образом, вы должны добавить свою собственную тему внешнего вида (которую можно просто переслать, используя псевдоним):
qx.Theme.define("test.myAwesomeTheme", {
extend : playground.theme.Appearance,
appearances :
{
"widget/groupBox" : "groupbox",
}
});
qx.theme.manager.Appearance.getInstance().setTheme(test.myAwesomeTheme);
Я расширяю playground.theme.Appearance
здесь, который распространяется qx.theme.indigo.Appearance
который снова расширяется qx.theme.simple.Appearance
, И у них есть определение groubox, которое мы пересылаем.
Предполагается, что вы реализуете _createChildControl, но не вызываете его напрямую. Вместо этого вызовите getChildControl в своем конструкторе и позвольте ему вызывать _createChildControl, если это необходимо, поскольку он также кэширует результат.
Кажется, что GroupBox плохо подходит для того, что вы хотите, - кажется, он предполагает, что элементы одинакового размера и формы находятся внутри своего подвиджета фрейма, когда заполнены из реализации _createChildControl()
,
Вместо этого используйте другой Composite() внутри основного контейнера, добавьте "Registration" как еще один дочерний элемент управления меткой типа в качестве первого дочернего элемента пользовательского виджета, и все будет выглядеть намного лучше (хотя и не идентично).
Быстрое и небрежное подтверждение концепции: http://tinyurl.com/m7ykhta