QGraphicsItem中子Item與父Item的消息傳遞問題

現在要做一個需要在父item上添加控制點(子item)來調整父item形狀的功能。


關鍵是子item移動之後,要把自己的位置信息交給父item,讓父item更新自己的形狀。


查看了很久Qt的document,需要在父ITEM中用setFiltersChildEvents(true)來設置允許攔截所有給子item的消息,然後再重載這個函數:

bool sceneEventFilter ( QGraphicsItem * watched, QEvent * event )
{
	if(watched->type()==QGraphicsRectItem::Type) //我的子item都是rect
	{
		if(event->type() == QEvent::GraphicsSceneMouseMove)
		{
			//處理移動消息
		}
		else if(event->type() == QEvent::GraphicsSceneMouseRelease)
		{
			//處理鼠標釋放消息
		}
	}
	return false; //false的話子item的消息仍然要被處理,如果返回true,子item的消息將不再被處理
}

解決了這個問題。

重載時要注意判斷是否是自己想要攔截的item。


或者也可以使用

installSceneEventFilter 

來設置允許攔截某item的消息,指定要過濾的item



參考文章:http://blog.csdn.net/fly542/article/details/6459661




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章