Архитектура приложения Qt Flowchart - PullRequest
3 голосов
/ 08 сентября 2010

Я хочу создать приложение для потоковой диаграммы в Qt, чтобы немного попрактиковаться в моделировании приложений с графическим интерфейсом.Все, что у него есть - это перетаскиваемые прямоугольники и круги, которые можно соединить прямыми линиями.

Поскольку это мое первое приложение с графическим интерфейсом, я не уверен, как обычно проектируют такой проект.Вот мои два дизайна.

1) Создайте группу классов моделей (Box, Circle, Line и т. Д.) И связанных видов (например, BoxView, CircleView и т. Д.).Объекты модели имеют такие свойства, как цвет, x, y, ширина, высота.Классы представлений являются подклассами элементов Qt UI.Кроме того, существуют контроллеры, такие как BoxMoveController, которые получают события мыши из пользовательского интерфейса и соответствующим образом обновляют представление блока и модель блока.Или, может быть, лучше, если представление в виде окна получает событие, обновляет себя, а затем передает событие в контроллер для обновления модели?Теперь я создаю логику приложения для логики потоковой диаграммы, которая работает в модели (например, соединяет линии с блоками).Пользовательский интерфейс соответствующим образом обновляется моделью, уведомляя объекты представления о том, что происходит обновление модели.

2) Забудьте о моделях и создайте приложение, ориентированное на вид.Создайте группу классов (Box, Circle, Line и т. Д.), Которые подклассируют элементы пользовательского интерфейса Qt.Затем создайте логику приложения для потоковой диаграммы поверх этих классов.

Что лучше?Что бы вы сделали по-другому?

1 Ответ

1 голос
/ 10 сентября 2010

Я бы пошел с рамкой графического представления .

Посмотрите на пример DiagramScene , предоставленный Qt.

находится в вашем Qt examples folder/graphicsview/.

Я уверен, что это даст вам хорошее представление о том, как реализовать такое приложение в Qt-way.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...