грамотно организовать цикл обработки событий? То есть у меня есть несколько классов,один отвечает за медиа(звук и видео, воспроизведение), один за хранение данных вне программы(не БД), просто настройки, конфиги и пути, и проч., один класс отвечает за обмен данными по сети, и есть класс, внутри которого есть loop, в котором с помощью switch(case) реализуется собственно логика приложения: есть какие то события, которые ожидаются в цикле в этом классе, события приходят из других классов в виде сигналов и каждое событие соответственно, ожидается в своем case, и соответственно, результатом является отправка сигналов из этого класса в другие классы, через соединения их со слотами в MainWindow. Как вообще правильно писать подобные вещи? Есть ли какое руководство на эту тему?
В Qt такие циклы не требуются. Под капотом у Qt есть QEventLoop, который, как раз таки, и обеспечивает правильную работу сигналов и слотов. Любые while(true) в мейн потоке будут вешать тебе гуи. Да, есть механизмы работы с таким, например метод QApplication::processEvents(), но это, скорее, костыль для подобных ситуаций. В твоем случае - тебе не нужен свитч с множеством ветвлений, просто отдельный метод на отдельный кейс. Нужно по сигналу от сетевого менеджера начать проигрывание видоса? Сделал сигнал в классе с сетью который передает данные, сделал слот который эти данные начинает проигрывать в медиаплеере, законнектил, и оно будет работать
У меня рабочий цикл крутится в воркере в отдельном потоке. Видимо я не совсем точно описал проблему. Речь не о QEventLoop, а именно о методике. У меня в рабочем цикле есть куча степов, в каждом из которых может быть реализована логика в зависимости от нескольких условий: если а =x, b = y и так далее через время = x выполнить то, или emit какой-то сигнал.
Еще у меня есть курс от Udemy - Udemy - Qt 5 Design Patterns 2020-8. У самого руки не дошли, но может кого заинтересует. https://drive.google.com/drive/folders/1rZdCuPCXlxrawldKjQRzb8R4HuQVbzYN?usp=sharing
Обсуждают сегодня