Qt — несколько слоев, содержащих QGraphicsView в одной 3D-сцене (QGLWidget)

В настоящее время я оцениваю возможности реализации навигационной 3D-сцены, которая позволяет отображать несколько 2D-слоев. Чтобы быть немного более точным, я хотел бы отобразить несколько графиков в трехмерной среде, чтобы точно определить сходства и различия между этими графиками. Судя по следующему снимку экрана, будет два графика (один черный, один серый), которые эквивалентны — для разных графиков девиантные узлы могут быть выделены красным цветом.

два графика в 3D

Я работаю с Qt Graphic View Framework и установил редактируемый графический редактор, используя QGraphicsScene и несколько QGraphicsItemов, которые я отдельно от этого проекта.

Qt предоставляет поддержку OpenGL, например, QGLWidget и я посмотрел на предоставленные примеры. Учитывая, что я не работал с OpenGL (хотя я немного работал с Java3D), я был бы рад, если бы некоторые люди могли поделиться своим опытом.

Мне пришло в голову несколько решений:

  1. Преобразуйте каждую QGraphicsView в QPixmap и отобразите их в 3D, что позволит перемещаться по графикам, но запретит выбор элементов и т. д.
  2. Создайте эквивалентный 3D-элемент для каждого элемента 2D-графика и «преобразуйте» каждый QGraphicsView в 3D-представление. Я думаю, это будет довольно много работы (особенно, поскольку я не работал с OpenGL)
  3. Может быть, есть простой способ «поместить» QGraphicScene, представление или просто QGraphicsItem в QGLWidget без особых адаптаций и при этом зарегистрировать обычные «события мыши» и т. д.

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


person Community    schedule 30.10.2011    source источник


Ответы (1)


Проект Qt3D предоставляет класс с именем QGraphicsEmbedScene, который делает именно то, о чем вы просите.

person Gareth Stockwell    schedule 02.11.2011