show() не имеет эффекта если окно видимо. Сделать последним можно через QWidget::lower(), то есть (1, 2, 3) можно сделать (1, 3, 2) вызвав w2->lower(). Но это не спасает при болee длинной цепочке, напр (1, 2, 3, 4) -> (1, 3, 2, 4). Вызывать lower/raise последовательно не годится т.к. окно всплывает/прячется немедленно. А QWidget::stackUnder к сожалению не имеет эффекта для top-level.
Топовыми окнами занимаются оконные менеджеры, думаю для каждой платформы можно найти более удобные нативные средства.
В карбоне помню SendBehind, на какаве не знаю, придется изучать, плюс лезть в вонючие кишки Вындоуз. И файлы порасписывать или загадить текст #if'ами. Дороговато обойдется совет знатока
