我有一个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());
}