QGraphicsItem选择

时间:2012-01-20 10:04:39

标签: qt selection qgraphicsitem

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

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

Thx

4 个答案:

答案 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 仅在双击时触发,而不是在单击时触发。