Я пытаюсь реализовать пользовательский QGraphicsScene
, и когда мы нажимаем левую клавишу, он позволяет перетаскивать элемент, для которого я использую QDrag
и передавать данные элемента, затем перезаписываю событие dropEvent
, гдеЯ получаю элемент и dropEvent
новый родитель.Я думаю, что QGraphicsPixmapItem
поверх другого элемента может быть сложным, поэтому, возможно, лучшим вариантом будет установить его как parentItem
.
Однако я получаю следующую ошибку 'auto' not allowed in lambda parameter
и неточно знаю, почему
graphicsscene.h
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
graphicsscene.cpp
void GraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
auto its = items(QRectF(event->scenePos() - QPointF(1,1), QSize(3,3)));
auto val = std::find_if(its.constBegin(), its.constEnd(), [](auto const& it){ // <-- ERROR HERE
return it->type() > QGraphicsItem::UserType;
});
if(val == its.constEnd())
return;
if(event->button() == Qt::RightButton){
showContextMenu(event->scenePos());
}
else{
createDrag(event->scenePos(), event->widget(), *val);
}
}
Спасибо за любую информацию оэто.