내가 하나의 QGraphicsView
와 GraphicsScene:public QGraphicsScene
상속 클래스 기능을포인터에서 deleteLater를 호출 한 후 segfault를 피하는 방법은 무엇입니까?
void GraphicsScene::adv()
{
if (actor)
views().at(0)->ensureVisible(actor,200,100);
advance();
}
advance()
전화를 똑딱, IT 및 QTimer
보고있는 것은 현장에있는 모든 QGraphicsItem
객체에 보낼 수있는 오버라이드 (override) 방법이다. 이 기능의 요점은 - 내가 항상 actor
이 보이도록하고 싶습니다. actor
은 unit:public QGraphicsPixmapItem
의 개체는 GraphicsScene
입니다.
actor
의 어느 시점에서 나는 deleteLater()
으로 전화합니다.
내가 views().at(0)->ensureVisible(actor,200,100);
라인
궁금에서 SEGFAULT
받을 다음 타이머 틱, 왜 deleteLater()
후 true
올바른 조건이 내가 무엇을 사용해야한다 등 if (actor)
패스?
포인터를 가리키는 대상을 삭제해도 포인터 값은 자동으로 null이되지 않습니다. 따라서, 객체'actor'가 삭제 되더라도'if (actor)'는 여전히 통과됩니다. – vahancho