@mar0029 As @mrjj already said this is just wrong:
MainWindow *test = new MainWindow(this)
connect(test->setupScreen, SIGNAL(sendSetupLocation(QString)),
this, SLOT(receivedSetupLocation(QString)));
You create a NEW instance of MainWindow and connect its signal with the slot. You must use MainWindow instance that already exists. If your dialog is not created directly by MainWindow, but instead by another dialog then you can just pass the pointer to your MainWindow instance to the first dialog constructor which then pass it to the second dialog constructor.
Printing the variable which is set in a slot just after connecting the signal to the slot will just print its current value (empty string in this case)., because the slot was not called yet. If you call the slot directly with a not empty string then this string should be printed.