Существует ли простой метод для выбора части QGraphicsItem (например, для выделения, например, с пунктирной границей), несмотря на его положение в QGraphicsScene
Я нашел QGraphicsItem::ItemIsSelectable
, но это мне мало помогает.
Спасибо
Существует ли простой метод для выбора части QGraphicsItem (например, для выделения, например, с пунктирной границей), несмотря на его положение в QGraphicsScene
Я нашел QGraphicsItem::ItemIsSelectable
, но это мне мало помогает.
Спасибо
Вы не можете выбрать часть QGraphicsItem. Вы можете выбрать весь элемент. Обычно при выборе он рисует пунктирный прямоугольник вокруг себя.
Выбрать товар можно по:
QGraphicsItem::setSelected
or
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, 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
срабатывает только при двойном щелчке, а не при одиночном.