我正在尝试实现自定义QGraphicsScene
,当我们按向左键时,它允许拖动我使用QDrag
并传递项目数据的项目,然后覆盖{ {1}}事件,我得到元素和dropEvent
个新父对象。我认为dropEvent
可能会比较棘手,因此最好的选择是将其设置为QGraphicsPixmapItem
。
但是,我收到以下错误parentItem
并且不知道为什么
graphicsscene.h
'auto' not allowed in lambda parameter
graphicsscene.cpp
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
感谢您对此的任何见识。
答案 0 :(得分:1)
C ++ 11不支持通用lambda。这意味着您不能使用auto
类型的参数。
只需更新到C ++ 14:
QMAKE_CXXFLAGS += -std=c++14
这至少需要GCC 5。
与一般的lambda相比,通用lambda的支持更为棘手,因为它们需要将模板实现为lambda闭包。
如果要使用C ++ 11,则必须直接指定函数参数的类型:
auto val = std::find_if(
its.constBegin(),
its.constEnd(),
[](Item const& it) { // let Item be the
// type of (*its.constBegin())
}
);