Распространение событий мыши Qt Graphics Scene - PullRequest
0 голосов
/ 11 апреля 2010

привет, я учусь 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, но если я добавляю их в главное окно (не на сцену), они работают как положено. Что я делаю не так?

1 Ответ

0 голосов
/ 12 апреля 2010

Я полагаю, что вы должны иметь возможность отправлять mouseReleaseEvent на ваш виджет QGraphicsScene, если бы добавили обработчик события mousePressEvent и вызовите accept () для объекта события. Что-л. как это:

void ProductInfo::mousePressEvent(QMouseEvent* event)
{
    QWidget::mousePressEvent(event);
    event->accept();
}

надеюсь, это поможет, с уважением

...