Возможно ли, чтобы QGraphicsWidget
был родителем QWidget
? У меня есть QGraphicsItem
, и я хочу добавить QWidget
в этот элемент. Как я могу установить QWidget
в QGraphicsItem
или QGraphicsWidget
, которые являются дочерними элементами QGraphicsItem
?
Как установить Qwidget внутри QGraphicsWidget?
Ответы (2)
QGraphicsWidget
в основном QGraphicsItem
для QWidget
s ... он предоставляет макет, который вы можете использовать, так что это не должно быть проблемой вообще
использовать: QGraphicsScene::addWidget( QWidget * widget, Qt::WindowFlags wFlags = 0 )
QWidget и QGraphicsWidget очень разные. Однако система QGraphics предоставляет QGraphicsProxyWidget для встраивания QWidget и элементов на основе QWidget в QGraphicsScene.
Вы можете напрямую создать QGraphicsProxyWidget и вызвать функцию setWidget перед добавлением QGraphicsProxyWidget в QGraphicsScene:
QGraphicsScene* pScene = new QGraphicsScene;
QWidget* pWidget = new QWidget;
QGraphicsProxyWidget* pProxy = new QGraphicsProxyWidget(parent); // parent can be NULL
pProxy->setWidget(pWidget);
pScene->addItem(pProxy);
Прокси-виджет теперь можно перемещать, масштабировать и т. д. в сцене, а функциональные возможности его QWidget будут передавать сигналы, чтобы он работал должным образом.
В качестве альтернативы, QGraphicsScene содержит функцию быстрого доступа addWidget, которая внутренне создает для вас QGraphicsProxyWidget и возвращает его из функции:
QGraphicsProxyWidget* pProxy = pScene->addWidget(pWidget);