I have no idea of an elegant solution, but I guess you could keep a list of all QDockWidgets, capture their moveEvents and reposition them nicely, should they overlap.