проблема была в том, что я приводил к DocWindow несуществующий объект, так как он закрывался почему-то (до сих пор не понял почему он уничтожался раньше времени)
Вот про это я и говорил. Непонимание того как работает Qt приводит к неправильной архитектуре.
Советую для начала прочитать документацию( можно взять русский перевод ). Там много интересного написано и сразу приходит понимание как правильно надо использовать эту библиотеку.
но проверка mdiArea->isActiveWindow() никак не спасало ситуацию у меня на WinXP Qt4.7.4
решение - это собственно:
1) проверка количества дочерних окон (т.е. есть ли что приводить к DocWindow)
2) проверка успешности приведения к DocWindow
вопрос к тебе, а остальные вещи в целом без ошибок написаны? я имею в виду не функциональность, а придерживание к философии Qt?