propagación evento Qt Escena Gráficos ratón
-
26-09-2019 - |
Pregunta
hola estoy aprendiendo qt y yo estoy haciendo el folowing añadir algunos widgets a una escena de gráficos
void MainWindow::addWidgets(QList<QWidget *> &list, int code)
{
if(code == CODE_INFO)
{
QWidget *layoutWidget = new QWidget();
QVBoxLayout *layout = new QVBoxLayout();
foreach(QWidget *w, list)
{
layout->addWidget(w);
this->connect(((ProductInfo*)w), SIGNAL(productClicked()), this, SLOT(getProductDetails()));
}
layoutWidget->setLayout(layout);
this->scene->addWidget(layoutWidget);
}
}
mi clase ProductInfo procesos de liberación del ratón y emite una señal
void ProductInfo::mouseReleaseEvent(QMouseEvent *e)
{
QWidget::mouseReleaseEvent(e);
emit productClicked();
}
El problema es después de añadir los widgets a la escena que ya no reciben el evento de lanzamiento del ratón y no emiten señal productClicked pero si los agrego a la ventana principal (no a la escena) que funcionan como se esperaba. ¿Qué estoy haciendo mal?
Solución
Creo que debe ser capaz de obtener mouseReleaseEvent enviada a su widget haciendo QGraphicsScene si se sumaría controlador de eventos mousePressEvent y aceptación de llamada () para el objeto de evento allí. Smth. de esta manera:
void ProductInfo::mousePressEvent(QMouseEvent* event)
{
QWidget::mousePressEvent(event);
event->accept();
}
Espero que esta ayuda, respecto
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow