Russian Qt Forum
Ноябрь 23, 2024, 04:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Сигналы из подклассов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сигналы из подклассов (Прочитано 2565 раз)
Frid
Гость
Сигналы из подклассов
«
:
Август 04, 2018, 20:07 »
Здравствуйте уважаемые форумчане.
У меня примерно такая структура приложения Qt:
MainWindow -> Player -> Manager -> (class1, class2, class2)
Собственно MainWindow класс интерфейса, по нажатию кнопки инициализирует класс Player наследованный от QThread. Player же в отдельном потоке читает кадры с камеры в цикле и посылает сигнал в MainWindow для отрисовки кадра. Так же Player инициализирует класс Manager, который получает кадр от Player, режет кадр по каналам и раздает получившиеся изображения трем классам (class1, class2, class2).
Вопрос в том, как из (class1, class2, class2) отправить сигнал в MainWindow?
А наоборот, отправить сигнал из MainWindow в (class1, class2, class2)?
Есть такие мысли:
1. Передавать ссылку на MainWindow через конструкторы по цепочке до (class1, class2, class2) и в них делать коннект сигналов и слотов; (не пробовал)
2. Коннектить сигналы к сигналам, т.е. отправлять сигнал от (class1, class2, class2) в Manager, сигнал Manager отправит сигнал в Player, а Player уже отправит сигнал в MainWindow;
3. По тому же принципу что и 2й способ, только коннектить сигнал-слот и так передавать по цепочке.
На мой взгляд самый адекватный 1й способ (при условии что это сработает).
2й и 3й выглядит как костыль, куча бесполезного кода...
Может есть более элегантное решение такой задачи?
Записан
RedDog
Частый гость
Offline
Сообщений: 221
Re: Сигналы из подклассов
«
Ответ #1 :
Август 04, 2018, 20:25 »
Представьте, что завтра ваш код кто то захочет заюзать с другой гуйней, основанной не на MainWindow (QML например, или веб-морда), а он зачем то в конструкторах будет требовать ссылку на него.
Записан
Frid
Гость
Re: Сигналы из подклассов
«
Ответ #2 :
Август 04, 2018, 21:08 »
Ок, это не есть хорошо. А что вы предлагаете? Делать цепочки геттеров и сеттеров, потом проверять каждую итерацию тот ли результат что мне нужно?
Записан
RedDog
Частый гость
Offline
Сообщений: 221
Re: Сигналы из подклассов
«
Ответ #3 :
Август 04, 2018, 21:23 »
Насколько я понял, то Player это интерфейс некой "бизнес логики". Вот он и должен сигналить о своих изменениях, а кто на них подпишется, уже не его дело.
Ну и таки, да, "проксировать" сигналы снизу вверх, и по пути, на любом слое бизнес логики, им можно модифицировать аргументы, в зависимости от изменений реализации конкретного слоя.
Другими словами, каждый класс это некоторый самодостаточный "черный ящик" со своим АПИ, которым можно пользоваться без дополнительных телодвижений (в данном случае, не передавая туда никакую гуйню).
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...