Краткий ответ: включение Qt testlib приводит к появлению консоли. Удаление этого заставляет это уйти.
Более подробно, если ваш .pro-файл добавляет testlib в QT, например,
QT += sql \
webkit \
network \
testlib
, тогда последний шаг ссылки выполняется с такой строкой
g++ -enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc
-mthreads
-Wl
-Wl,-subsystem,console
-o debug\MyApp.exe object_script.MyApp.Debug
-L"c:\Qt\2009.01\qt\lib"
-lglu32 -lgdi32 -luser32 -lQtWebKitd4 -lQtTestd4
-lQtSqld4 -lQtGuid4 -lQtNetworkd4 -lQtCored
Мы закончили с использованием консольной подсистемы! Я полагаю, что использование testlib заставляет это произойти, так что результаты теста куда-то идут.
Если мы теперь отредактируем файл .pro и удалим ссылку на testlib и перестроим, мы получим шаг ссылки, подобный этому
g++ -enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc
-mthreads
-Wl
-Wl,-subsystem,windows
-o debug\Ammotin.exe object_script.Ammotin.Debug
-L"c:\Qt\2009.01\qt\lib"
-lglu32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lQtWebKitd4
-lQtSqld4 -lQtGuid4 -lQtNetworkd4 -lQtCored4
Ура! Подсистема - это окна, больше нет консольных окон.