The issue was -bs, I thought it defaulted to o1, e2, p1 but that isn't the case when it's ran from a C++ instance. I had to tell it to put progress or -bsp# to 1. To direct quote the manual for 7zip 18.06 (x64);

-bs (Set output stream for output/error/progress line) switch

Syntax
-bs{o|e|p}{0|1|2}
{id} Stream Type
o standard output messages
e error messages
p progress information
{N} Stream Destination
0 disable stream
1 redirect to stdout stream
2 redirect to stderr stream
Default values: o1, e2, p1.

Examples
7z t a.7z -bse1 > messages.txt
tests a.7z archive and sends error messages to stdout that is redirected to messages.txt

7z a -si -so -bsp2 -txz -an < file.tar > file.tar.xz
compresses file.tar (from stdin) to file.tar.xz (stdout stream) and shows progress information in stderr stream that can be seen at console window.

Commands that can be used with this switch
a (Add), d (Delete), h (Hash), l (List), e (Extract), u (Update), x (Extract with full paths)
I was able to use the Windows Subsystem for Linux to speed testing up in this case. When I sent stdout to a text file with > FileName.txt and used less, I saw that without -bsp1 it wasn't outputting anything. When the process finished I had the same thing I had in my Qt application. Adding -bsp1 to the 7zip command;

Qt Code:
  1. if (ArchiveType == "7z")
  2. {
  3. Args << "-t7z";
  4. Args << "-bsp1"; //<== Added Here
  5. Args << "-m0=LZMA2:d512m:fb273";
  6. Args << "-mx9";
  7. Args << "-myx=9";
  8. Args << "-mtc=off";
  9. Args << "-mtm=off";
  10. }
  11. else
  12. {
  13. Args << "-tzip";
  14. Args << "-bsp1"; //<== And Here
  15. Args << "-mx";
  16. Args << "-mtc=off";
  17. }
To copy to clipboard, switch view to plain text mode 

I got full feedback. I can also send the output to a different channel, -bsp2 which will send it to the error channel for easier parsing. I can use the output channel for final details and each line is absolutely positioned.

In short, my connect was working fine. It was 7zip that was giving me trouble.