Qooxdoo: стилизация отдельных виджетов

Каков наиболее удобный способ применить пользовательский стиль к отдельному элементу виджета, который не соответствует стилю темы по умолчанию. Меня все еще смущает использование декораторов. Как применить несколько декораторов, например. для свойств границы и фона для элемента виджета.

Я пробовал использовать пользовательские декораторы, например. :


        var titleBar = new qx.ui.container.Composite();
        titleBar.set({
            decorator : qx.ui.decoration.MBackgroundImage,
                        style : {
                backgroundImage : '/images/tbar.png'
                        }
        });

Но я получаю сообщение об ошибке:

Ошибка в декораторе свойств класса qx.ui.container.Composite в методе setDecorator с входящим значением «[Mixin qx.ui.decoration.MBackgroundImage]»: неверно!


person lorefnon    schedule 24.01.2012    source источник


Ответы (2)


Вы должны создать правильный декоратор, а не один из миксинов декоратора. Например. в вашем случае должно работать что-то вроде этого:

    var titleBar = new qx.ui.container.Composite();
    var myBackground = new qx.ui.decoration.Background();
    myBackground.setBackgroundImage("/images/tbar.png");
    titleBar.set({
        decorator : myBackground
    });
person ThomasH    schedule 25.01.2012

Вы должны использовать украшения Mixins только тогда, когда вы определяете украшения с помощью "qx.Theme.define".

Я думаю, что лучший способ определить пользовательские стили — это определить новый ключ внешнего вида и использовать этот ключ для вашего виджета.

    var titleBar = new qx.ui.container.Composite();
    titleBar.setAppearance("myApperanceKey");
person Christian Hagendorn    schedule 26.01.2012