Выбор QGraphicsItem

Существует ли простой метод для выбора части QGraphicsItem (например, для выделения, например, с пунктирной границей), несмотря на его положение в QGraphicsScene

Я нашел QGraphicsItem::ItemIsSelectable, но это мне мало помогает.

Спасибо


person Matthieu Riegler    schedule 20.01.2012    source источник


Ответы (4)


Вы не можете выбрать часть QGraphicsItem. Вы можете выбрать весь элемент. Обычно при выборе он рисует пунктирный прямоугольник вокруг себя.

Выбрать товар можно по:

QGraphicsItem::setSelected

or

QGraphicsScene::setSelectionArea
person graphite    schedule 20.01.2012

Вы хотите выбрать его, когда вы нажимаете на него? Если да, вы можете переопределить прослушиватель mousePressEvent(QGraphicsSceneMouseEvent event) для этого элемента и использовать setSelected(). В Java (извините за это) это было бы примерно так:

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

Если вы хотите выбрать его левой кнопкой, конечно. :)

person Bertrand Moreau    schedule 20.01.2012

Вы можете вызвать QGraphicsScene::setSelectionArea(путь QPainter, QTransform) и позже получите область, вызвав selectionArea. Однако, если вы хотите получить элементы, которые в данный момент выбраны, вы получите только целые QGraphicsItems.

person Neox    schedule 20.01.2012

Вот пример использования ItemIsSelectable:

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

Затем вы можете подключить сигнал selectionChanged к слоту:

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

Обратите внимание, что selectionChanged срабатывает только при двойном щелчке, а не при одиночном.

person Kai    schedule 07.05.2021