Название: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 09:04 Ситуация - есть объект(А), на которого у меня уже есть ссылка. Тот объект А другой объект Б, и к тому Б мне нужно подконектится, но я не знаю когда будет создан Б, и ссылки на него у меня нету. Можно ли при создании Б подключить сигнал Б к сигналу А а в программе уже конектиться к слоту объекта А? Будет ли такое работать, и правильно ли так делать?
Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Serr500 от Август 29, 2012, 09:32 Будет ли такое работать, и правильно ли так делать? Работать будет. Но так делать неправильно. Что мешает соединить сигнал от Б сразу со слотом А?Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 10:32 По задумке, А является "провайдером" сигналов для других объектов, в принципе как и Б, но я могу получить ссылку на Б когда угодно, а на А у меня всегда есть. Поэтому было бы удобно, что бы другие объекты вообще не работали с Б.
Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Serr500 от Август 29, 2012, 10:45 А где вы видите, что другие объекты работают с Б? Объект Б сам, получив ссылку на объект А, соединяет свой сигнал со слотом А. При разрушении Б он удалит соединение. Объект А вообще ничего не будет знать о других объектах.
P.S. Вы, конечно, можете сделать и так, как описали. Но имейте в виду, что такой подход приводит к дополнительным операциям, которые в случае сигнал-слотовых соединений достаточно затратны. Вместо одной операции (сигнал Б - слот А) у вас будет две (сигнал Б - сигнал А - слот А). Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 11:27 В А никаких слотов нету, А просто связывающее звено между миром и Б, А создает Б, просто так сложилось что мир не знает, когда появится Б, а надо подконектится к Б. Прикинул, проверил, затрат больших не будет, потому что Б создается раз за время жизни программы, и вызов типа сигнал-сигнал-слот будет один за время жизни программы. Спасибо за ответы.
Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Serr500 от Август 29, 2012, 12:14 мир не знает, когда появится Б, а надо подконектится к Б Похоже, Вы не понимаете, либо путаете сигналы со слотами. Не надо миру коннектиться к Б. Нужно, чтобы сам Б при создании коннектился к миру. Источник сигнала - это Б, следовательно, Б должен коннектиться, а не А! Это Б заинтересован в том, чтобы его сообщения обработали. Если бы наоборот, мир посылал сигналы Б, то ваша точка зрения была бы верна, да и то с ограничениями.Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 14:30 мир не знает, когда появится Б, а надо подконектится к Б Похоже, Вы не понимаете, либо путаете сигналы со слотами. Не надо миру коннектиться к Б. Нужно, чтобы сам Б при создании коннектился к миру. Источник сигнала - это Б, следовательно, Б должен коннектиться, а не А! Это Б заинтересован в том, чтобы его сообщения обработали. Если бы наоборот, мир посылал сигналы Б, то ваша точка зрения была бы верна, да и то с ограничениями.Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Serr500 от Август 29, 2012, 15:32 Абсолютно не согласен. Да ваше право.Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Bepec от Август 29, 2012, 15:35 Не, Serr500 я тоже с вами несогласен. В данном случае заинтересован "А" в получении сигналов с "Б". Ибо он его создаёт и его единственная цель в жизни - поработать прокладкой. :)
А "Б" пофиг - он и подконекченный сигналы тыряет и не подконекченный :) Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить. Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: andrew.k от Август 29, 2012, 15:57 Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить. а то мир рухнет?Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 16:21 Serr500, а этим вы согласны ;D:
По Вашей логике, у меня есть класс который выдает рандомные числа, при этом еммитит сигнал, с новым числом. То для того, что бы вывести числа в текстовое поле, мой генератор должен знать про то текстовое поле?! Выдрать отку да то ссылку, и подключить слот append() в своему сигналу?! Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: crashtua от Август 29, 2012, 16:22 Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить. Так эпично написали, будто троли сами всячески избегают использования сигналов\слотов :) .Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Igors от Август 29, 2012, 16:32 По Вашей логике, у меня есть класс который выдает рандомные числа, при этом еммитит сигнал, с новым числом. То для того, что бы вывести числа в текстовое поле, мой генератор должен знать про то текстовое поле?! Выдрать отку да то ссылку, и подключить слот append() в своему сигналу?! Текстовое поле заинтересованное в получении числа(или тот, кто его создал), а не еммитер нового рандомного числа! Ни А ни Б не должны этим заниматься, нужно связующее звено - небольшой класс, часто с множественным наследованием (напр один интерфейс для A др для Б). И вообще-то это банальное, рядовое архитектурное решение (попривыкали с сигналами сачковать)Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: andrew.k от Август 29, 2012, 16:38 Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить. Так эпично написали, будто троли сами всячески избегают использования сигналов\слотов :) .Поэтому рекомендует много не брать. Один сигнал в руки. Название: Re: connect сигнал к сигналу - правильно ли? Отправлено: Bepec от Август 29, 2012, 18:02 Меньше слов, больше дела, великан малютка :)
|