C++-Нетология май 2025
Цель задания: добавление простых и удобных индикаторов (HUD) поверх движущейся карты для внутреннего продукта-симулятора в компании.
Порядок выполнения задания:
- Скачать с гитхаб библиотеку caca, собрать и запустить. После запуска должна быть такая картина:
- Скачать демонстрационный набор полётных данных.
- Распарсить CSV для доступа к строкам и столбцам.
- Разработать и добавить индикаторы слоем поверх карты.
- Запустить симуляцию и посмотреть, как меняются основные индикаторы
- Использовать столбцы Latitude (deg)/ Longitude (deg) для движения карты
- Остальные - на ваше усмотрение для демонстрации работы индикаторов на дисплее
- Выложить результат на github-страничку, отправить ссылку
От индикации ожидается что-то вроде (только на фоне подвижная карта):
Ограничения по стилю нет, главное чтобы было удобно и читаемо.
Пользовательские сценарии:
* Отображение предупреждающих/напоминающих транспарантов для помощи оператору
* Отображение параметров и состояния систем в виде различных шкал
* Отображение пиктографикой отказов (крыло красное)
Виды индикаторов
У всех индикаторов положение и размер задаётся в процентах от ширины и высоты. Например: (0.1, 0.2, 0.03, 0.03). Левый верхний угол - на 10% ширины отстоит от левого края карты, 0.2 - на 20% от верхнего. Ширина/высота 3% от ширины/высоты виджета карты.
Также у всех индикаторов должен быть слот show, по булевскому признаку можно было включить/выключить отображение на карте.
У всех индикаторов должна быть настройка основного цвета, шрифта и т.п.
Транспарант
- Конструктор:
- Положение и размер
- Фиксированная часть лейбела - QString
- Картинка для отображения
Цифровой индикатор
- Конструктор:
- Положение и размер
- Фиксированная часть лейбела - QString
- Изменяемая часть (слот) - double
Линейный ползунок
- Конструктор:
- Положение и размер
- Минимум-максимум для входного значения
- Настройки отображения (подписывать числа или нет)
- Изменяемая часть (слот) - double
Круговой индикатор
- Конструктор:
- Положение и размер
- Минимум-максимум для углов индикатора (К примеру, -180-180)
- Минимум-максимум для входного значения
- Настройки отображения (подписывать числа или нет)
- Изменяемая часть (слот) - double
Ограничения по реализации
- использовать только qt-библиотеки, никаких сторонних
- не использовать движок qt quick/qml. Обходится QPainter или QSvg для отрисовки
- должно быть просто и удобно добавлять новые индикаторы и подключать сигналы-слоты для обновления значений
Ссылки
- Репозиторий с картой antlas1/cacaMap: a c++ Qt based map widget
- Данные для примера
- HUD-дисплеи для вдохновения Spaceship Hud Images - Free Download on Freepik
Награждение
Участники, которые займут призовые места получат мерч от компании.