I'll consider the idea that dialogs etc do not know where information is stored, they just emit signals saying "i need this kind of information" and the connections created (for example in the MainWindow) decide who shall supply what information.
That would be an excellent choice. Even if there is a "Master of the Universe", using signals and slots can hide all of that. You might also think about the idea that the MainWindow might not be the master either - it could create a master object, and connect the dialog signals and slots to that object instead of handling them itself. That will help give you a system where all of the business logic is as separate as possible from the GUI logic so that changes in the GUI will not force you into a redesign of the business logic.