Я создаю графический интерфейс для манипуляции роботизированной рукой. Расположение руки можно описать с помощью 6 поплавков (описывающих положение различных суставов руки.
Интерфейс состоит из QGraphicsView со схемой руки (которую можно нажать, чтобы изменить положение руки - настройка 6 поплавков). Интерфейс также имеет 6 блоков lineEdit, чтобы также отдельно настраивать эти значения.
Когда щелкают по графическому представлению и когда изменяются поля редактирования строк, я бы хотел, чтобы поля редактирования строк / графический вид оставались в синхронизации.
Это приводит меня в замешательство относительно того, как хранить 6 поплавков и запускать события при их обновлении. Моя текущая идея такова:
- Местоположение руки робота должно быть представлено классом RobotArmLocation. Объекты этого класса затем имеют такие методы, как obj.ShoulderRotation () и obj.SetShoulderRotation ().
- MainWindow имеет единственный экземпляр RobotArmLocation.
Дальше я немного запутался в том, как все объединить. Я думаю:
Основное окно имеет слот ArmLocationChanged. Это сигнализируется всякий раз, когда объект местоположения изменяется.
Класс диаграммы будет иметь SetRobotArmLocation (RobotArmLocation & loc). Когда диаграмма изменяется, можно свободно изменять объект местоположения и отправлять сигнал в слот ArmLocationChanged.
- Аналогичным образом, изменение любого текстового поля вызовет сигнал в этот слот ArmLocationChanged. В слоте есть код для синхронизации всех элементов.
Мне это кажется беспорядком, у кого-нибудь есть другие предложения? Я также подумал о следующем, есть ли у него какие-либо достоинства?
- Класс RobotArmLocation имеет слот ValueChanged, диаграмма и текстовые поля могут использовать его напрямую и обходить MainWindow напрямую (кажется, чище?)
спасибо за любую мудрость!