Я планирую написать клиентское приложение на Qt, которое должно полностью заполнять свой пользовательский интерфейс данными, полученными через REST-соединение.Пока мы можем предположить, что данные находятся в формате JSON.Клиент должен ответить на Server-Sent-Events и обновить его состояние и соответственно отобразить.
У меня мало опыта в Qt, за исключением начальных страниц, и я заблудился с того, как начать.Однако я подготовил изображение, похожее на диаграмму классов, чтобы помочь мне объяснить:
Я знаю, что это не обычный UML, но я думаю, что он достаточно точный и понятный, чтобы получитьуказать поперек.В традиционном C ++ я бы смоделировал желтые классы и интерфейс.Я бы использовал один статический экземпляр ColourManager для обработки всех соединений и, если захочу, выплюнул список объектов IColour.Итак, основываясь на моем изучении Qt, я понимаю, что Manager будет называться Model в Qt.
Проблема, однако, возникает, когда я принимаю участие в просмотрев учетную запись.Каждый из объектов акварель и Мел будет иметь слот (?) Для прослушивания событий Server-Sent-Events, указывающих изменения в данных и методах для их самостоятельной отправки.
Например, объект акварели может использоватьtoggleDiluted
метод (какое совпадение) переключить приватное свойство _isDiluted
и затем использовать статический ColourManager
для сохранения его нового состояния в сети.
Я не знаю, как лучше отобразить это, поэтому я добавил в класс зеленый компонент qml.В этой части я хотел бы оформить дисплей компонента.На данный момент это может быть очень просто, например, кнопка переключения с названием «Текст для акварели» и цветной прямоугольник для мела.
Я знаю, как все это сделать.Часть, где я теряюсь, это когда это должно быть связано.Я прочитал о моделях в Qt doc и понимаю, что могу использовать Object Model , чтобы повторно использовать компонентную часть qml моих классов, когда у меня есть унифицированные списки из того же типа .
Таким образом, мои вопросы:
- Правильно ли мое понимание и моделирование до сих пор?
- Это ввсе разумные способы начать все?
- Как я могу использовать несколько Delgate для отображения в ListView, чтобы в зависимости от отображаемого объекта выбиралась полезная визуализация?