Qt 捕获QGraphicsCenter的selectionChanged()信号

Qt 捕获QGraphicsCenter的selectionChanged()信号,qt,qt4,Qt,Qt4,我试图捕捉到一个信号,表明用户已使用橡皮键选择了一个区域。我试过这个: QGraphicsScene* scene = new QGraphicsScene(); connect(scene, SIGNAL(selectionChanged()), this, SLOT(SelectionChanged())); this->graphicsView->setScene(scene); this->graphicsView->setDragMode(QG

我试图捕捉到一个信号,表明用户已使用橡皮键选择了一个区域。我试过这个:

  QGraphicsScene* scene = new QGraphicsScene();

  connect(scene, SIGNAL(selectionChanged()), this, SLOT(SelectionChanged()));
  this->graphicsView->setScene(scene);
  this->graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
但我的SelectionChanged()插槽从未被调用。有什么办法吗?

以便在选择场景中的某些项目时发出信号。要获得选中,应设置标志
QGraphicsItem::ItemIsSelectable


您确定这些项目是可选择的吗?

正如@weblectic answer的评论所述,
QGraphicsView
橡皮筋用于选择
qgraphicssitems


要获取橡皮筋的坐标,您需要继承
QGraphicsView
,然后按照上的说明,将坐标存储在鼠标上并释放,然后使用点的QRect发出信号。

当前场景中实际上没有任何项目。这听起来像是这样的:当“选择区域已设置”时,它也会发出,我以为橡皮筋正在执行此操作?selectionChanged()信号表示场景中的QGraphicsItem的选择状态已更改。如果用户没有使用rubberband选择任何项目,则选择没有更改,因此不会发出信号。好的,那么问题变成“如何捕获与正在使用/发布的图形视图关联的rubberband事件?”对于未来的读者,我在这里实现了这一点: