2016-04-24 18 views

Antwort

2

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(); 
}