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