你好,我正在学习 qt,我正在执行以下操作以将一些小部件添加到图形场景中
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 信号,但是如果我将它们添加到主窗口(而不是场景),它们会按预期工作。我究竟做错了什么?