QGraphicsItem中子Item與父Item的訊息傳遞問題
現在要做一個需要在父item上新增控制點(子item)來調整父item形狀的功能。
關鍵是子item移動之後,要把自己的位置資訊交給父item,讓父item更新自己的形狀。
查看了很久Qt的document,需要在父ITEM中用setFiltersChildEvents(true)來設定允許攔截所有給子item的訊息,然後再過載這個函式:
boolsceneEventFilter(QGraphicsItem*watched,QEvent*event)
{
if(watched->type()==QGraphicsRectItem::Type) //我的子item都是rect
{
if(event->type()==QEvent::GraphicsSceneMouseMove)
{
//處理移動訊息
}
elseif(event->type()==QEvent::GraphicsSceneMouseRelease)
{
//處理滑鼠釋放訊息
}
}
returnfalse; //false的話子item的訊息仍然要被處理,如果返回true,子item的訊息將不再被處理}
解決了這個問題。
過載時要注意判斷是否是自己想要攔截的item。
或者也可以使用