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