Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
1

Концепция сигналов и слотов

14.08.2016, 09:46. Показов 1294. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Часто, когда просматриваю проекты, написанные другими программистами, встречаю примерно такое:

C++ (Qt)
1
2
3
connect(server, SIGNAL(clientConnected(QString)), this, SLOT(clientConnected(QString)));
connect(server, SIGNAL(clientDisconnected(QString)), this, SLOT(clientDisconnected(QString)));
connect(this, SIGNAL(sendMessage(QString)), server, SLOT(sendMessage(QString)));
С концепцией сигналов и слотов, в общем я знаком, но вот, что означают такие штуки - не знаю.
При этом, я вижу определение слота в коде, а вот определение сигнала нету.

Что может означать такая конструкция, когда сигнал и слот имеет одинаковое название?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2016, 09:46
Ответы с готовыми решениями:

Связывание сигналов и слотов
Приветствую! Возникла проблема со связыванием сигнала и слота. Есть класс-приемник(MainWindow) и...

Использование сигналов и слотов
Каким образом засчет сигналов и слотов можно запустить нужную функцию при запуске главной формы?...

Быстродействие сигналов и слотов
В документации сказано: В ДЕСЯТЬ раз!!!!11 Почему так много? Ведь соответствие сигнатур...

Надёжность сигналов-слотов
Всем привет! Представьте Программа, выполняющая сканирование сайтов на предмет обновлений...

5
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
14.08.2016, 09:56 2
Цитата Сообщение от Blitzor DDD Посмотреть сообщение
При этом, я вижу определение слота в коде, а вот определение сигнала нету.
И не увидите, так как реализацию сигнала Qt обеспечивает самостоятельно, средствами moc. Разумеется, можно "поковырять" соответствующий moc-файл, но для программиста это может представлять интерес только для "общего развития".

Что может означать такая конструкция, когда сигнал и слот имеет одинаковое название?
Ничего это не означает. Программист не счел нужным напрягать фантазию, или ему так просто удобнее...
0
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
14.08.2016, 10:03  [ТС] 3
А что происходит "под капотом"? вот самый простой пример,
C++ (Qt)
1
connect(close, SIGNAL(clicked()),this, SLOT(close()));
тут всё ясно, сигнал - нажатие, слот - выход. Имена разные никакого конфликта нет, а тут ведь пример другой:
C++ (Qt)
1
connect(close, SIGNAL(clicked()),this, SLOT(clicked()));
как такое может быть, сигнал и слот ведь по определению разные сущности.
0
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
14.08.2016, 10:10 4
Цитата Сообщение от Blitzor DDD Посмотреть сообщение
Имена разные никакого конфликта нет, а тут ведь пример другой
А в чем проблема-то? Вы выполняете связывание сигнала clicked() объекта, на который указывает close, со слотом clicked() объекта, адресуемого this. Два разных объекта, поэтому конфликта имен тоже не будет.
1
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
14.08.2016, 10:13  [ТС] 5
Хорошо, а вот тут:
C++ (Qt)
1
connect(server, SIGNAL(clientConnected(QString)), this, SLOT(clientConnected(QString)));
значит просто SIGNAL(clientConnected(QString)) - это системный сигнал, который заложен внутри библиотеки, а SLOT(clientConnected(QString)) - это название слота, просто имеющее такое же имя и по сути никак не связанное с сигналом библиотеки?
0
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
14.08.2016, 10:57 6
Названия методов/сигналов, реализуемых классами Qt, не являются их монопольной собственностью/зарезервированными идентификаторами/именами, и подчиняются обычным правилам языка. Поэтому вам никто не мешает дать такое же название своему методу/сигналу в своем классе.
1
14.08.2016, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2016, 10:57
Помогаю со студенческими работами здесь

Задачка на использование сигналов и слотов
Два класса, у первого будет свойство и сигнал. Пусть при изменении свойства объекта первого класса...

Многократный коннект сигналов и слотов
Имеют ли последствия многократное connect в Qt? К примеру у меня в кнопке...

Использование слотов и сигналов в потоках
Всем здравствуйте. Изучал qt потоки и слоты отдельно, вроде всё понятно и работет, но если я...

Не работает Инструмент сигналов-слотов
Вроде бы, что может быть легче чем сигналы и слоты, но, вот оно что: У меня есть два файла (на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru