Qu'est-ce que qobject_cast?

Quelqu'un pourrait-il expliquer en termes simples que possible (ou aussi simple que vous le souhaitez) ce qobject_cast est, ce qu'il fait et pourquoi nous avons besoin de jeter un type de classe à une autre?

Comme, je reçois typecasting dans le sens de la coulée d'une int comme un char ou QString peut-être à utiliser QMessageBox, mais pourquoi jeté dans les différentes classes?