Russian Qt Forum
Ноябрь 02, 2024, 00:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы в QML  (Прочитано 5101 раз)
lighting
Гость
« : Июль 06, 2012, 10:48 »

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

В принципе логика в таком подходе есть, но как-то уж больно много дублирующихся сигналов/слотов плодится. Все так-же делают и всех все устраивает или я просто чего-то не знаю и это можно сделать как-то проще?
Записан
mutineer
Гость
« Ответ #1 : Июль 06, 2012, 10:58 »

В QML пока столько граблей, что это просто мелочь:)
Кстати, а зачем слот для пересылки сигнала? соединяй сигнал с сигналом
Записан
OKTA
Гость
« Ответ #2 : Июль 06, 2012, 13:20 »

а ты вызывай по клику сразу слот класса =)
Записан
mutineer
Гость
« Ответ #3 : Июль 06, 2012, 13:22 »

а ты вызывай по клику сразу слот класса =)
И какой смысл тогда разбивать все на модули, если эти модули нельзя переиспользовать?
Записан
OKTA
Гость
« Ответ #4 : Июль 06, 2012, 13:29 »

ну нет, кнопка кнопкой останется, но просто не нужно миллион реконнектов сигнала делать, пока он из глубин поднимется))) а, и + не обязательно вызывать напрямую слот класса - если хочется с сигналами, то если id корневого объекта уникально, то оно должно быть доступно их любых глубин - те же сигналы, но количество меньше
Записан
lighting
Гость
« Ответ #5 : Июль 06, 2012, 13:58 »

Цитировать
Кстати, а зачем слот для пересылки сигнала? соединяй сигнал с сигналом
Это я неудачно выразился, делаю примерно так:
Код
Javascript
button1.onClick: { buttonClicked(1);}
OKTAчто-то я не пойму что именно вы предлагаете. Если внутри Button.qml вызывать слот моего c++ класса, то кнопку уже нигде нельзя будет использовать, или везде потом onClick переопределять?
Записан
OKTA
Гость
« Ответ #6 : Июль 06, 2012, 14:07 »

внутри не надо! размещаешься кнопочку на панели например и делаешь ей onClicked:, где и пишешь то, что надо вызывать из слотов!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.277 секунд. Запросов: 21.