If you think about how the signal will be emitted, this is done by the basic QObject - by the way the QObject knows that it has been destroyed.
Thus, when the derived class is destroyed, the most derived destructor is launched first (for standard C ++ dtor data processing), and the message "MyObject destructor" displayed. When this dtor completes, the underlying dtors start, and in this case a QObject dtor is displayed, which then emits a signal and the message "About to be destroyed!" .
The wording in the mentioned documents may be a little inaccurate. It can be better worded with something like: "This signal is emitted when obj is destroyed" or "This signal is emitted just before obj is completely destroyed."
source share