Russian Qt Forum
Ноябрь 24, 2024, 21:39
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
connect сигнал к сигналу - правильно ли?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: connect сигнал к сигналу - правильно ли? (Прочитано 5848 раз)
crashtua
Гость
connect сигнал к сигналу - правильно ли?
«
:
Август 29, 2012, 09:04 »
Ситуация - есть объект(А), на которого у меня уже есть ссылка. Тот объект А другой объект Б, и к тому Б мне нужно подконектится, но я не знаю когда будет создан Б, и ссылки на него у меня нету. Можно ли при создании Б подключить сигнал Б к сигналу А а в программе уже конектиться к слоту объекта А? Будет ли такое работать, и правильно ли так делать?
Записан
Serr500
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #1 :
Август 29, 2012, 09:32 »
Цитата: crashtua от Август 29, 2012, 09:04
Будет ли такое работать, и правильно ли так делать?
Работать будет. Но так делать неправильно. Что мешает соединить сигнал от Б сразу со слотом А?
Записан
crashtua
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #2 :
Август 29, 2012, 10:32 »
По задумке, А является "провайдером" сигналов для других объектов, в принципе как и Б, но я могу получить ссылку на Б когда угодно, а на А у меня всегда есть. Поэтому было бы удобно, что бы другие объекты вообще не работали с Б.
Записан
Serr500
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #3 :
Август 29, 2012, 10:45 »
А где вы видите, что другие объекты работают с Б? Объект Б сам, получив ссылку на объект А, соединяет свой сигнал со слотом А. При разрушении Б он удалит соединение. Объект А вообще ничего не будет знать о других объектах.
P.S. Вы, конечно, можете сделать и так, как описали. Но имейте в виду, что такой подход приводит к дополнительным операциям, которые в случае сигнал-слотовых соединений достаточно затратны. Вместо одной операции (сигнал Б - слот А) у вас будет две (сигнал Б - сигнал А - слот А).
Записан
crashtua
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #4 :
Август 29, 2012, 11:27 »
В А никаких слотов нету, А просто связывающее звено между миром и Б, А создает Б, просто так сложилось что мир не знает, когда появится Б, а надо подконектится к Б. Прикинул, проверил, затрат больших не будет, потому что Б создается раз за время жизни программы, и вызов типа сигнал-сигнал-слот будет один за время жизни программы. Спасибо за ответы.
Записан
Serr500
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #5 :
Август 29, 2012, 12:14 »
Цитата: crashtua от Август 29, 2012, 11:27
мир не знает, когда появится Б, а надо подконектится к Б
Похоже, Вы не понимаете, либо путаете сигналы со слотами. Не надо миру коннектиться к Б. Нужно, чтобы сам Б при создании коннектился к миру. Источник сигнала - это Б, следовательно,
Б должен коннектиться, а не А!
Это Б заинтересован в том, чтобы его сообщения обработали. Если бы наоборот, мир посылал сигналы Б, то ваша точка зрения была бы верна, да и то с ограничениями.
Записан
crashtua
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #6 :
Август 29, 2012, 14:30 »
Цитата: Serr500 от Август 29, 2012, 12:14
Цитата: crashtua от Август 29, 2012, 11:27
мир не знает, когда появится Б, а надо подконектится к Б
Похоже, Вы не понимаете, либо путаете сигналы со слотами. Не надо миру коннектиться к Б. Нужно, чтобы сам Б при создании коннектился к миру. Источник сигнала - это Б, следовательно,
Б должен коннектиться, а не А!
Это Б заинтересован в том, чтобы его сообщения обработали. Если бы наоборот, мир посылал сигналы Б, то ваша точка зрения была бы верна, да и то с ограничениями.
Абсолютно не согласен. Когда компания "Мерседес" делает автомобили, она заходит к каждому в дом и старается всучить новую машину? Или она дает рекламу, а потом люди с мира приходят и покупают их(при желании)? И каким образом еммитер сигналов в Qt может быть заинтересован в обработке сигнала, если сигналы\слоты это реализация паттерна обсервер, который предполагает нормальную работу даже без слушателей(читай - "слотов")? По моему это Вы что то недопонимаете. По Вашей логике, у меня есть класс который выдает рандомные числа, при этом еммитит сигнал, с новым числом. То для того, что бы вывести числа в текстовое поле, мой генератор должен знать про то текстовое поле?! Выдрать отку да то ссылку, и подключить слот append() в своему сигналу?! Текстовое поле заинтересованное в получении числа(или тот, кто его создал), а не еммитер нового рандомного числа!
«
Последнее редактирование: Август 29, 2012, 14:53 от crashtua
»
Записан
Serr500
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #7 :
Август 29, 2012, 15:32 »
Цитата: crashtua от Август 29, 2012, 14:30
Абсолютно не согласен.
Да ваше право.
Записан
Bepec
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #8 :
Август 29, 2012, 15:35 »
Не, Serr500 я тоже с вами несогласен. В данном случае заинтересован "А" в получении сигналов с "Б". Ибо он его создаёт и его единственная цель в жизни - поработать прокладкой.
А "Б" пофиг - он и подконекченный сигналы тыряет и не подконекченный
Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить.
Записан
andrew.k
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #9 :
Август 29, 2012, 15:57 »
Цитата: Bepec от Август 29, 2012, 15:35
Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить.
а то мир рухнет?
Записан
crashtua
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #10 :
Август 29, 2012, 16:21 »
Serr500
, а этим вы согласны
:
Цитата: crashtua от Август 29, 2012, 14:30
По Вашей логике, у меня есть класс который выдает рандомные числа, при этом еммитит сигнал, с новым числом. То для того, что бы вывести числа в текстовое поле, мой генератор должен знать про то текстовое поле?! Выдрать отку да то ссылку, и подключить слот append() в своему сигналу?!
Записан
crashtua
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #11 :
Август 29, 2012, 16:22 »
Цитата: Bepec от Август 29, 2012, 15:35
Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить.
Так эпично написали, будто троли сами всячески избегают использования сигналов\слотов
.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #12 :
Август 29, 2012, 16:32 »
Цитата: crashtua от Август 29, 2012, 14:30
По Вашей логике, у меня есть класс который выдает рандомные числа, при этом еммитит сигнал, с новым числом. То для того, что бы вывести числа в текстовое поле, мой генератор должен знать про то текстовое поле?! Выдрать отку да то ссылку, и подключить слот append() в своему сигналу?! Текстовое поле заинтересованное в получении числа(или тот, кто его создал), а не еммитер нового рандомного числа!
Ни А ни Б не должны этим заниматься, нужно связующее звено - небольшой класс, часто с множественным наследованием (напр один интерфейс для A др для Б). И вообще-то это банальное, рядовое архитектурное решение (попривыкали с сигналами сачковать)
Записан
andrew.k
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #13 :
Август 29, 2012, 16:38 »
Цитата: crashtua от Август 29, 2012, 16:22
Цитата: Bepec от Август 29, 2012, 15:35
Собственно главный ответ на вопрос темы - да, это нормально и разрешено троллями, но лучше бы сигналов много не плодить.
Так эпично написали, будто троли сами всячески избегают использования сигналов\слотов
.
Верес боится, что ему достанется мало сигналов.
Поэтому рекомендует много не брать. Один сигнал в руки.
Записан
Bepec
Гость
Re: connect сигнал к сигналу - правильно ли?
«
Ответ #14 :
Август 29, 2012, 18:02 »
Меньше слов, больше дела, великан малютка
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...