Тема вообще интересная. Я думаю, уважаемый
Я.К. всё же имел желание узнать, как правильно архитектурно проектировать Qt приложения. Я когда-то тоже интересовался на эту тему, так сказать, искал "Best practices" при разработке Qt приложений, но так ничего не нашёл. В итоге пришёл к выводу, что Qt приложения нужно проектировать и разрабатывать как любые другие приложения с объектно-ориентированным дизайном с использованием шаблонов проектирования и т.п.
Может поделитесь, как вы поступаете в следующих случаях:
1. Есть главная форма приложения, например, с табами. Если подразумевается, что функциональность табов не создаётся динамически во время выполнения программы, то выносите ли вы функциональность табов в отдельные виджеты? Если выносите, как организуете взаимодействие с главной формой, через созданный интерфейс виджета и сигналы-слоты?
А если не выносите, а, скажем, весь GUI табов создаёте в Qt Designer в одной форме, то как потом определяете все слоты, в одном файле главной формы, или разбрасываете по другим файлам (классам) и как-то налаживаете их взаимодействие?
В одном файле (классе) располагать все слоты естественно не удобно, их может быть очень много, получается класс огромных размеров, спагетти-код и т.д. Как поймать тот уровень абстракции, чтобы слоты находились в разных классах, при этом всё было логически правильно без излишних затрат на взаимодействие объектов между собой (низкая связность).
2. Управление свойством isEnableв контролов. Как вы управляете этим свойством групп элементов (когда надо зажигать, гасить разные контролы в зависимости от текущего состояния программы)? Создаёте какие-то менеджеры состояний, которые управляют состоянием контролов (гасят, зажигают нужные контролы), или действуете как-то иначе?
Я раньше GUI не занимался вообще, а сейчас появилась работа, связанная как раз с GUI. И я понимаю постепенно, что для создания красивых и правильных GUI программ должны быть прокачаны особые skills.
