How does PoW solved in miner.cpp gets transferred to main.cpp in source code?
If you read a few lines after the BlockFound signal, you'll see:

CValidationState state;
if (!ProcessNewBlock(state, chainparams, NULL, pblock, true, NULL))
    return error("BitcoinMiner: ProcessNewBlock, block not accepted");


https://github.com/bitcoin/bitcoin/blob/v0.12.0rc2/src/miner.cpp#L373-L375

This is where the processing actually starts. ProcessNewBlock is defined in main.cpp.