probably: the nature of the deleted() signal is that it is emitted in QObject's destructor. By that time your subclass's destructor ~Species has been executed and the class is no longer a Species but only a QObject. Accessing any members of Species would *not* be correct anymore.
So the cast does work. Your expectations are not correct.
HTH
Bookmarks