如何在 QGraphicsWidget 中设置 Qwidget

How can set a Qwidget inside a QGraphicsWidget?

本文关键字:设置 Qwidget QGraphicsWidget      更新时间:2023-10-16

QGraphicsWidget有可能成为QWidget的父级吗?我有一个QGraphicsItem,我想在这个项目中添加一个QWidget,如何在QGraphicsItem子项的QGraphicsItemQGraphicsWidget中设置QWidget

QGraphicsWidget基本上是QWidgetQGraphicsItem...它提供了一个您可以使用的布局,所以它应该完全没有问题

用: QGraphicsScene::addWidget( QWidget * widget, Qt::WindowFlags wFlags = 0 )

QWidget和QGraphicsWidget是非常不同的。但是,QGraphics 系统提供了一个 QGraphicsProxyWidget,用于在 QGraphicsScene 中嵌入 QWidget 和基于 QWidget 的项目。

您可以直接创建 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);