Qt Multiple window design

Я прошу прощения за длинный абзац, но это единственный способ, которым я могу это объяснить.

Основной вопрос:
Как у меня есть несколько окон, которые совместно используют некоторую функциональность пользовательского интерфейса, не имея всего этого в одном гигантском классе?

Моя ситуация:
У меня есть вопрос относительно дизайна приложения, содержащего несколько окон. Окна будут совместно использовать несколько компонентов в интерфейсе пользователя (дата & время, батарея и т. д.). Каждое окно также будет иметь большую часть своего пользовательского интерфейса. Моя первоначальная идея заключалась в том, чтобы иметь отдельные окна, чтобы класс был не таким большим, а файлы пользовательского интерфейса было легче просматривать. Тем не менее, я обнаружил, что я повторил код для функциональности общего пользовательского интерфейса, так как я должен реализовать его в каждом классе. Кроме того, я вынужден иметь много соединений между окнами, чтобы убедиться, что некоторые вещи обрабатываются при смене окон.

Возможное решение:
Я читал, что QStackedWidget хорош для нескольких окон, но все будет в одном классе. Если, конечно, есть способ обработки некоторых из пользовательского интерфейса в подклассе основного пользовательского интерфейса? Без создания других файлов пользовательского интерфейса?

0

Решение

Я согласен с использованием QStackedWidget, Я обычно проектирую свои приложения со следующими идеологиями:

  1. Каждое окно / экран имеет свой собственный класс.
  2. Если есть повторение функциональности или кода, эта часть получает свой собственный класс (который наследуется каждым из классов окна).
  3. QStackedWidget реализация написана в первом классе, для которого main.cpp создает экземпляр объекта и показывает.
  4. Чтобы предотвратить высокое использование памяти, я реализую класс, содержащий QStackedWidget динамически создавать классы окна и удалять их (по мере необходимости). Это необязательно и будет зависеть от производительности вашего приложения на вашем устройстве.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]