Я создаю некоторый виджет отображения графических данных в Qt4, и у меня возникло желание использовать QGraphicsScene
для него, создать QGraphicsItem
s для элементов данных и т. Д.
Однако я хотел добавить некоторый слой элементов управления (например, полосы прокрутки, масштабирование + другие кнопки - я хочу сделать его в таком же стиле, как, например, Google Maps, то есть данные будут отображаться по всему виджету и кнопки будут отображаться поверх них) для виджета. Поэтому я подумал, что возможно добавить их на сцену (возможно, в качестве ребенка QGraphicsGroupItem
, который будет отображаться поверх данных). Но я хочу, чтобы они перемещались и меняли размер при изменении размера всего виджета, поэтому я должен использовать QGraphicsLayout
для управления ими. Но в этот момент я обнаружил, что все довольно сложно.
Проблема в том, что при использовании QGraphicsLayout
выполняются следующие ограничения:
- Только макет
QGraphicsWidget
может управляться макетом
QGraphicsLayout
может использоваться только для управления детьми QGraphicsWidget
Это означает, что мне придется создать свои элементы управления как QGraphicsWidget
s, добавить верхний уровень QGraphicsWidget
в виджет данных и самостоятельно управлять размером этого виджета верхнего уровня.
Итак, я хочу спросить:
Разве классический подход (т. Е. Использовать простые старые виджеты для всех элементов управления и использовать QGraphicsScene
только для отображения данных) был бы более разумным?
Есть ли какое-либо преимущество в использовании QGraphicsScene
в этом случае (производительность или простота ...)?
Как мне использовать QGraphicsScene
, чтобы использовать его сильные стороны?