Dibujo de widgets (como botones) sobre qgraphicsview
-
24-10-2019 - |
Pregunta
¿Cómo dibujo widgets interactivos como Qbutton y ediciones de línea a través de un QGraphicsView? Para EX, he seleccionado una región sobre una imagen en una aplicación de edición de imágenes que muestra una imagen con QgraphicsView, y quiero anotar esta región con un nombre.
Así que quiero tener una edición de línea y dos botones (cruzar y marcar) debajo de esta selección rectangular. ¿Cómo dibujo estos?
¡El código de muestra sería genial!
Solución
QGraphicsScene
tiene una función addWidget()
donde puedes agregar un widget a una escena. Si no desea pasar por la función Addget de escena, puede crear un QGraphicsProxyWidget
usar setWidget()
y agregue el widget proxy a su escena.
Otros consejos
Puede agregarlos como lo haría con cualquier otro control. Usé el diseñador de QT para generar lo siguiente:
class MyForm: public QMainWindow
{
private:
QGraphicsView *graphicsView;
QLineEdit *lineEdit;
QPushButton *pushButton;
QPushButton *pushButton_2;
public:
MyForm()
{
graphicsView = new QGraphicsView(this);
graphicsView->setObjectName(QString::fromUtf8("graphicsView"));
graphicsView->setGeometry(QRect(130, 90, 441, 191));
lineEdit = new QLineEdit(graphicsView);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
lineEdit->setGeometry(QRect(160, 150, 113, 22));
pushButton = new QPushButton(graphicsView);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(280, 140, 115, 32));
pushButton_2 = new QPushButton(graphicsView);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
pushButton_2->setGeometry(QRect(400, 140, 115, 32));
}
};