Как установить Qwidget внутри QGraphicsWidget?

Возможно ли, чтобы QGraphicsWidget был родителем QWidget? У меня есть QGraphicsItem, и я хочу добавить QWidget в этот элемент. Как я могу установить QWidget в QGraphicsItem или QGraphicsWidget, которые являются дочерними элементами QGraphicsItem?


person Amir eas    schedule 13.10.2013    source источник


Ответы (2)


QGraphicsWidget в основном QGraphicsItem для QWidgets ... он предоставляет макет, который вы можете использовать, так что это не должно быть проблемой вообще

использовать: QGraphicsScene::addWidget( QWidget * widget, Qt::WindowFlags wFlags = 0 )

person Zaiborg    schedule 13.10.2013
comment
Спасибо за ответ, Решено :) - person Amir eas; 14.10.2013

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);
person TheDarkKnight    schedule 14.10.2013
comment
Спасибо вам за ваш ответ :) - person Amir eas; 14.10.2013