Thanks for reviewing and spotting that. I tried on Ubuntu to call only dlg->raise() but doesn't seem to work (also try other things like dlg->setFocus(), dlg->setFocusPolicy(Qt::StrongFocus), dlg->focusWidget() and some combinations), until I found this in the QT documentation about activateWindow() (which I should have checked first):
This function performs the same operation as clicking the mouse on the title bar of a top-level window. On X11, the result depends on the Window Manager. If you want to ensure that the window is stacked on top as well you should also call raise. Note that the window must be visible, otherwise activateWindow() has no effect.
On Windows, if you are calling this when the application is not currently the active one then it will not make it the active window. It will change the color of the taskbar entry to indicate that the window has changed in some way. This is because Microsoft does not allow an application to interrupt what the user is currently doing in another application.
So, since you tried it on Mac already, let me take a look on how it behaves on Windows.