The slots are executed in the emission order of their corresponding signals as of today.
What happens in the background is that the queued connection puts an event into the queue and that will get processed. This queue is basically a FIFO (first-in-first-out) as it currently is implemented.
Here you can find some details if you wish to check out the implementation yourself:
void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority)
and
class QPostEventList : public QVector
However, I would personally suggest not to rely on this internal behavior as it is not documented and such, it can probably be subject for further changes without any notice.
Therefore, in my opinion, the more future proof way is to make explicit dependency management in your software if you need to rely on the other in some way. This is usually not a problem and even makes the code more explicit, thus more comprehensive.