Доступ к содержимому другого элемента в QGraphicsScene

У меня есть файл dialog.cpp, именно здесь я создал свой QGraphicsScene, который использует файл QGraphicsView.

Я создал два класса, которые наследуют QGraphicsPixmapItem, "Vehicle" и "Junction". Оба этих объекта добавляются к одному и тому же QGraphicsScene в моем файле dialog.cpp.

Я хочу вызвать метод, который является членом "Junction", из моего объекта "Vehicle". Метод возвращает логическое значение, которое мне нужно.

Это больше вопрос, ориентированный на С++, так как я уверен, что есть простое решение, которое использует доступ к родителю.

Справочная информация о проекте: Каждый "Vehicle" движется по дороге и приближается к "Junction". Затем транспортное средство должно спросить перекресток: «Есть ли на моей полосе зеленый свет?», и перекресток ответит "true/false".


person eddie-ryan    schedule 15.03.2013    source источник


Ответы (1)


Изучив возможные решения с помощью документации QT, я частично решил проблему.

Вызов this->scene() позволяет получить доступ к функциям-членам сцены, на которую был добавлен ваш объект. Поскольку я знаю координаты своего объекта, я вызываю this->scene()->itemAt(240,0); для получения указателя на элемент.

Возвращаемый указатель является самым верхним элементом сцены с заданными координатами. Если это создает проблему, поочередно используйте scene()->items() для получения списка всех элементов на сцене.

Однако это дает доступ только к элементу, а не к вектору, в котором хранится элемент. Я изучал использование функции ->parent() и думаю, что это может быть решением в сочетании с динамическим приведением ее к требуемому указателю. Обновлю ответ, если найду полное решение.

person eddie-ryan    schedule 16.03.2013