itemChange 함수에서 먼저 추가 할 자식 항목을 얻은 다음 dynamic_cast를 사용하여 'MyItem'으로 캐스팅하지만 캐스트는 항상 실패합니다.QGraphicsItem의 'itemChange()'에 대한 질문
QVariant MyItem::itemChange (GraphicsItemChange change, const QVariant & value)
{
if (change==ItemChildAddedChange)
{
QGraphicsItem* item=value.value<QGraphicsItem*>();
if (item)
{
MyItem* myItem=dynamic_cast<MyItem*>(item);//myItem always be NULL,
//although I know the item is 'MyItem' type.
if (myItem)
{
qDebug()<<"successful!";
}
}
}
return QGraphicsItem::itemChange(change,value);
}
대단히 감사합니다.
대단히 감사합니다! 당신이 맞아, 그것은 'dynamic_cast'생성자에서 사용하기 때문에 실패했습니다 .. [link] (http://stackoverflow.com/questions/6299266/dynamic-cast-of-this-inside-constructor). QGraphicsItem의 생성자에서 'itemChange'가 호출되고 그 시간까지 'Myitem'이 형성 (생성)되지 않았으므로 실패합니다. – jnblue