try this:
viewer.setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
viewer.raise(); // for MacOS
viewer.activateWindow(); // for Windows
it work in my project ( in my project viewer is QMainWindow): https://github.com/iptton/Rythem .