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'を使用するために失敗しました.. [リンク](http://stackoverflow.com/questions/6299266/dynamic-cast-of-this-inside-constructor)。 'itemChange'はQGraphicsItemのコンストラクタで呼び出され、その時間まで 'Myitem'は形成されていないので、失敗します。 – jnblue