Russian Qt Forum

Qt => Qt Quick => Тема начата: lighting от Июль 06, 2012, 10:48



Название: Сигналы в QML
Отправлено: lighting от Июль 06, 2012, 10:48
Троли советуют дробить QML на маленькие блоки и выделять их в отдельные файлы. Это разумно и помогает упростить разработку, но порождает свои сложности с тем что надо поднимать сигналы наверх. Приведу пример
Есть Button.qml у которой есть сигнал clicked()
Есть Panel.qml в которой этот сигнал связывается со слотом buttonClicked() чтобы вытянуть сигнал кнопки выше по иерархии qml файлов
Есть SuerpPanel.qml в которой и т.д.
...
Есть main.qml в которой поднятый сигнал связывается к примеру со слотом qtшного класса.

В принципе логика в таком подходе есть, но как-то уж больно много дублирующихся сигналов/слотов плодится. Все так-же делают и всех все устраивает или я просто чего-то не знаю и это можно сделать как-то проще?


Название: Re: Сигналы в QML
Отправлено: mutineer от Июль 06, 2012, 10:58
В QML пока столько граблей, что это просто мелочь:)
Кстати, а зачем слот для пересылки сигнала? соединяй сигнал с сигналом


Название: Re: Сигналы в QML
Отправлено: OKTA от Июль 06, 2012, 13:20
а ты вызывай по клику сразу слот класса =)


Название: Re: Сигналы в QML
Отправлено: mutineer от Июль 06, 2012, 13:22
а ты вызывай по клику сразу слот класса =)
И какой смысл тогда разбивать все на модули, если эти модули нельзя переиспользовать?


Название: Re: Сигналы в QML
Отправлено: OKTA от Июль 06, 2012, 13:29
ну нет, кнопка кнопкой останется, но просто не нужно миллион реконнектов сигнала делать, пока он из глубин поднимется))) а, и + не обязательно вызывать напрямую слот класса - если хочется с сигналами, то если id корневого объекта уникально, то оно должно быть доступно их любых глубин - те же сигналы, но количество меньше


Название: Re: Сигналы в QML
Отправлено: lighting от Июль 06, 2012, 13:58
Цитировать
Кстати, а зачем слот для пересылки сигнала? соединяй сигнал с сигналом
Это я неудачно выразился, делаю примерно так:
Код
Javascript
button1.onClick: { buttonClicked(1);}
OKTAчто-то я не пойму что именно вы предлагаете. Если внутри Button.qml вызывать слот моего c++ класса, то кнопку уже нигде нельзя будет использовать, или везде потом onClick переопределять?


Название: Re: Сигналы в QML
Отправлено: OKTA от Июль 06, 2012, 14:07
внутри не надо! размещаешься кнопочку на панели например и делаешь ей onClicked:, где и пишешь то, что надо вызывать из слотов!