привет я учусь кварты и я делаю на следующей, чтобы добавить некоторые виджеты в графической сценуQt График Scene мыши распространение события
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);
}
}
мой класс ProductInfo процессы освобождение мыши и выдает сигнал
void ProductInfo::mouseReleaseEvent(QMouseEvent *e)
{
QWidget::mouseReleaseEvent(e);
emit productClicked();
}
проблема заключается в том, что после добавления виджетов на сцену они больше не получают событие с выпуском мыши и не выдают сигнал productClicked, но если я добавлю их в главное окно (а не на сцену), они будут работать должным образом. Что я делаю не так?
спасибо, что был на месте только один вопрос, как сделали вы пришли к такому выводу, так что в следующий раз, когда я могу сделать это самостоятельно. Еще раз спасибо брату. – Olorin
Я взглянул на исходный код QGraphicsProxyWidgetPrivate :: sendWidgetMouseEvent, чтобы увидеть, как события мыши обрабатываются графическим изображением виджета –
Еще раз спасибо брату, которого вы рок :) – Olorin