The documentation for setWindowFlags() states that it calls setParent(), which in turn documents that it hides the window, necessitating the call to show(). But it appears you discovered that.

I have another question related to WindowStaysOnTopHint. I notice that when I toggle the option on my top level widget (by means of a checkbox in the window itself), the widget is automatically repositioned on the screen. It's harmless but annoying. Is there a simple way to suppress that repositioning action?