Actually it's best to simply call exec() on dialogs you want to be modal instead of calling show(). Remember that modality is a relation term meaning that a window is modal relative to another window - it means the other window won't accept events as long as the modal dialog is open. This of course propagates, so if all your windows are modal to the ones that called them, only the last created window will accept input events. When you close it then its parent will accept input events, then its parent, etc.