Перейти к содержанию

C++-Нетология май 2025

Цель задания: добавление простых и удобных индикаторов (HUD) поверх движущейся карты для внутреннего продукта-симулятора в компании.

Порядок выполнения задания:

  1. Скачать с гитхаб библиотеку caca, собрать и запустить. После запуска должна быть такая картина:
    img
  2. Скачать демонстрационный набор полётных данных.
  3. Распарсить CSV для доступа к строкам и столбцам.
  4. Разработать и добавить индикаторы слоем поверх карты.
  5. Запустить симуляцию и посмотреть, как меняются основные индикаторы
    1. Использовать столбцы Latitude (deg)/ Longitude (deg) для движения карты
    2. Остальные - на ваше усмотрение для демонстрации работы индикаторов на дисплее
  6. Выложить результат на github-страничку, отправить ссылку

От индикации ожидается что-то вроде (только на фоне подвижная карта):

img

Ограничения по стилю нет, главное чтобы было удобно и читаемо.

Пользовательские сценарии:
* Отображение предупреждающих/напоминающих транспарантов для помощи оператору
* Отображение параметров и состояния систем в виде различных шкал
* Отображение пиктографикой отказов (крыло красное)

Виды индикаторов

У всех индикаторов положение и размер задаётся в процентах от ширины и высоты. Например: (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 для отрисовки
  • должно быть просто и удобно добавлять новые индикаторы и подключать сигналы-слоты для обновления значений

Ссылки

Награждение

Участники, которые займут призовые места получат мерч от компании.

add_circle2025-04-16update2025-04-16