Qt - несколько слоев, содержащих QGraphicsView в одной трехмерной сцене (QGLWidget) - PullRequest
1 голос
/ 30 октября 2011

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

two graphs in 3d

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

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

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

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

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

1 Ответ

0 голосов
/ 02 ноября 2011

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

...