QGraphicsProxyWidget
ist nur ein Wrapper für jede normale QWidget
, daher hat es keine eigene Oberfläche zum anklicken. Alle Klickereignisse werden vom verschachtelten QPushButton
verarbeitet.
Im Beispiel unten ich eine zusätzliche parentWidget
hinzugefügt haben, die eine größere Fläche hat:
#include <QtCore>
#include <QtGui>
#include <QtWidgets>
int
main(int argc, char *argv[])
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget* parentWidget = new QGraphicsWidget();
// make parent widget larger that button
parentWidget->setMinimumSize(QSizeF(100, 30));
parentWidget->setFlags(QGraphicsItem::ItemIsMovable);
parentWidget->setAutoFillBackground(true);
scene.addItem(parentWidget);
QGraphicsProxyWidget *proxy =
scene.addWidget(new QPushButton("MOVE IT"));
// put your wrapped button onto the parent graphics widget
proxy->setParentItem(parentWidget);
view.setFixedSize(QSize(600, 400));
view.show();
return app.exec();
}