我有一个UI和一个实现mousePressEvent()的QGraphicsScene子类GraphicsScene,但是鼠标单击被忽略了。

ui->setupUi(this);
scene = new GraphicsScene(this);
scene->addPixmap(QPixmap::fromImage(someImage));
ui->graphicsView->setScene(scene);
connect(scene, SIGNAL(clicked(QPoint)), this, SLOT(someSlot(QPoint)));

不会调用GraphicsScene::mousePressEvent(),因此不会发出clicked()信号。我还需要设置其他内容来启用此功能吗?

更新:
void GraphicsView::mousePressEvent(QMouseEvent *event) {
        emit clicked(event->pos());
}

它连接到具有正确签名的插槽。

最佳答案

mos关于功能签名是正确的。该功能应该是:

void GraphicsView::mousePressEvent(QGraphicsSceneMouseEvent *event) {
        emit clicked(event->pos());
}

而不是
void GraphicsView::mousePressEvent(QMouseEvent *event) {
        emit clicked(event->pos());
}

08-17 03:05