5

是否存在一个简单的方法来选择 QGraphicsItem 的一部分(例如选择,例如带有虚线边框),尽管它在QGraphicsScene

我找到QGraphicsItem::ItemIsSelectable了,但对我帮助不大。

谢谢

4

4 回答 4

4

您不能选择 QGraphicsItem 的一部分。您可以选择整个项目。通常,当它被选中时,它会在自身周围绘制一个虚线矩形。

您可以通过以下方式选择项目:

QGraphicsItem::setSelected

或者

QGraphicsScene::setSelectionArea
于 2012-01-20T10:15:06.833 回答
3

您想在单击它时选择它吗?如果是,您可以覆盖mousePressEvent(QGraphicsSceneMouseEvent event)此项目的侦听器,并使用setSelected(). 在 Java 中(对不起),它会是这样的:

@Override
public void mousePressEvent (QGraphicsSceneMouseEvent event) {
    if (event.button() == Qt.MouseButton.LeftButton) {
        this.setSelected(true);
    }
}

当然,如果你想用左键选择它。:)

于 2012-01-20T10:20:49.677 回答
1

您可以调用QGraphicsScene::setSelectionArea(QPainter path, QTransform),然后通过调用 selectionArea 来检索区域。但是,如果您想检索当前正在选择的项目,您将只获得整个 QGraphicsItems。

于 2012-01-20T10:14:08.577 回答
0

以下是如何使用的示例ItemIsSelectable

QGraphicsRectItem* item = new QGraphicsRectItem(rect);
item->setFlag(QGraphicsItem::ItemIsSelectable);
graphicsScene->addItem(item);

然后,您可以将selectionChanged信号连接到插槽:

connect(graphicsScene, &QGraphicsScene::selectionChanged, this, &MyWidget::itemClicked);

请注意,selectionChanged仅在双击时触发,而不是在单击时触发。

于 2021-05-07T12:58:14.393 回答