Паттерн MVC (Model-View-Controller) при разработке приложений с использованием Qt позволяет разделить части программы, отвечающие за хранение и доступ к данным, их отображение и взаимодействие с пользователем, на отдельные слабо связанные модули. habr.com
Компоненты паттерна MVC в Qt: softwarepatternslexicon.com
- Модель. softwarepatternslexicon.com Описывает данные и бизнес-логику приложения. softwarepatternslexicon.com В Qt модели часто реализуются с помощью классов, производных от QAbstractItemModel, QAbstractListModel или QAbstractTableModel. softwarepatternslexicon.com
- Представление. softwarepatternslexicon.com Отображает данные пользователю. softwarepatternslexicon.com Qt предоставляет несколько классов представлений, таких как QListView, QTableView и QTreeView, которые можно использовать для представления данных в разных форматах. softwarepatternslexicon.com
- Контроллер. softwarepatternslexicon.com Обрабатывает ввод от пользователя и обновляет модель и представление соответственно. softwarepatternslexicon.com В Qt логика контроллера часто встраивается внутри представления или логики приложения. softwarepatternslexicon.com
Процесс работы приложения в архитектуре MVC с использованием Qt: metanit.com
- Модель взаимодействует с источником данных, обеспечивая интерфейс для других компонентов архитектуры. metanit.com
- Представление через индексы модели может взаимодействовать с данными. metanit.com В частности, используя индексы модели, представление через модель может получать данные и отображать их. metanit.com
- Делегат в представлении применяется для отображения данных. metanit.com Когда данные изменяются, делегат напрямую взаимодействует с моделью, уведомляя её об изменении данных, используя индекс модели. metanit.com
Модели, представления и делегаты взаимодействуют друг с другом с помощью сигналов и слотов: metanit.com
- Сигналы модели информируют представление об изменениях в данных, хранящихся в источнике данных. metanit.com
- Сигналы представления предоставляют информацию о взаимодействии пользователя с отображаемыми элементами. metanit.com
- Сигналы делегата используются во время редактирования, чтобы сообщить модели и представлению о состоянии редактирования. metanit.com
В итоге после обращения к приложению пользователь получает некоторый визуальный интерфейс. metanit.com