Russian Qt Forum

Qt => Qt Quick => Тема начата: Fregloin от Май 17, 2016, 12:21



Название: Установка одинакового значения для свойств всех элементов одного типа
Отправлено: Fregloin от Май 17, 2016, 12:21
Привет. Вопрос такой, можно ли как то задать одно значение для определенного свойства всех элементов одного типа? Что то типа статического свойства, т.е.
Код:
MyElementType.someProperty = value
, а ге указывать их в цикле для каждого?
В частности у меня рисуются переключатели, на которых есть рукоятка и три лампочки. Так вот на разных сценах у этих переключателей должны быть разного цвета лампы,
а плодить несколько переключателей, которые по сути делают одно и тоже я не вижу смысла.


Название: Re: Установка одинакового значения для свойств всех элементов одного типа
Отправлено: Отражение луны от Май 17, 2016, 17:58
Так по философии qml и не нужно плодить, наоборот он адаптирован под максимальное переиспользование кода.
Делаем компонент Switcher.qml. В нем в рутовый элемент выносим property:

Код:
Item {
id: rootSwitcherElement
property string color: "green"

Rectange {
//...
color: rootSwitcherElement.color
}
}

Затем используем его где-то:

Код:
Switcher {
id: switcher
color: "red"
}

По умолчанию будет использовано значение из Switcher.qml, то есть если не указать color: "red", то цвет будет зеленым. Если указать - тем, который укажете. Property binding так же будет работать.
И никаких циклов и прочих велосипедов)


Название: Re: Установка одинакового значения для свойств всех элементов одного типа
Отправлено: Fregloin от Май 18, 2016, 11:54
Я решил это другим путём. Для названий ламп я набил статические строки, затем зарегистрировал свой image provider, который по названиям ламп выдает нужные картинки. так даже лучше