2013-03-15 7 views
0

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

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

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

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

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

ответ

0

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

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

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

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