是否存在选择QGraphicsItem的一部分的简单方法(例如,对于选择,例如带有虚线边框),尽管它位于QGraphicsScene
我找到了QGraphicsItem::ItemIsSelectable
,但它对我帮助不大。
Thx
答案 0 :(得分:3)
您无法选择QGraphicsItem的一部分。您可以选择整个项目。通常在选择时会在自身周围绘制一个虚线矩形。
您可以选择以下项目:
QGraphicsItem::setSelected
或
QGraphicsScene::setSelectionArea
答案 1 :(得分:2)
您想在点击它时选择它吗?如果是,您可以覆盖此项目的mousePressEvent(QGraphicsSceneMouseEvent event)
侦听器,并使用setSelected()
。在Java中(对不起),它将类似于:
@Override
public void mousePressEvent (QGraphicsSceneMouseEvent event) {
if (event.button() == Qt.MouseButton.LeftButton) {
this.setSelected(true);
}
}
如果你想用左键选择它。 :)
答案 2 :(得分:1)
您可以致电QGraphicsScene::setSelectionArea(QPainter path, QTransform),然后通过调用selectionArea来检索该区域。但是,如果要检索当前正在选择的项目,您将只获得整个QGraphicsItems。
答案 3 :(得分:0)
以下是如何使用 ItemIsSelectable
的示例:
QGraphicsRectItem* item = new QGraphicsRectItem(rect);
item->setFlag(QGraphicsItem::ItemIsSelectable);
graphicsScene->addItem(item);
然后您可以将 selectionChanged
信号连接到插槽:
connect(graphicsScene, &QGraphicsScene::selectionChanged, this, &MyWidget::itemClicked);
请注意,selectionChanged
仅在双击时触发,而不是在单击时触发。