Народ, поясните кто в теме: как в qt(и не только)

грамотно организовать цикл обработки событий? То есть у меня есть несколько классов,один отвечает за медиа(звук и видео, воспроизведение), один за хранение данных вне программы(не БД), просто настройки, конфиги и пути, и проч., один класс отвечает за обмен данными по сети, и есть класс, внутри которого есть loop, в котором с помощью switch(case) реализуется собственно логика приложения: есть какие то события, которые ожидаются в цикле в этом классе, события приходят из других классов в виде сигналов и каждое событие соответственно, ожидается в своем case, и соответственно, результатом является отправка сигналов из этого класса в другие классы, через соединения их со слотами в MainWindow. Как вообще правильно писать подобные вещи? Есть ли какое руководство на эту тему?

4 ответов

26 просмотров

В Qt такие циклы не требуются. Под капотом у Qt есть QEventLoop, который, как раз таки, и обеспечивает правильную работу сигналов и слотов. Любые while(true) в мейн потоке будут вешать тебе гуи. Да, есть механизмы работы с таким, например метод QApplication::processEvents(), но это, скорее, костыль для подобных ситуаций. В твоем случае - тебе не нужен свитч с множеством ветвлений, просто отдельный метод на отдельный кейс. Нужно по сигналу от сетевого менеджера начать проигрывание видоса? Сделал сигнал в классе с сетью который передает данные, сделал слот который эти данные начинает проигрывать в медиаплеере, законнектил, и оно будет работать

Александр-G Автор вопроса
TheDoctor
В Qt такие циклы не требуются. Под капотом у Qt ес...

У меня рабочий цикл крутится в воркере в отдельном потоке. Видимо я не совсем точно описал проблему. Речь не о QEventLoop, а именно о методике. У меня в рабочем цикле есть куча степов, в каждом из которых может быть реализована логика в зависимости от нескольких условий: если а =x, b = y и так далее через время = x выполнить то, или emit какой-то сигнал.

Возможно, тебе подойдет паттерн наблюдатель(observer). Смотрю сейчас видос про него на коне.

S|с
screenshot Возможно, тебе подойдет паттерн наблюдатель(observ...

Еще у меня есть курс от Udemy - Udemy - Qt 5 Design Patterns 2020-8. У самого руки не дошли, но может кого заинтересует. https://drive.google.com/drive/folders/1rZdCuPCXlxrawldKjQRzb8R4HuQVbzYN?usp=sharing

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Карта сайта