下面是一些代碼,我已經躺在附近,創建一個控制檯和附加的輸入和輸出是:
#include <Windows.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
void Console::createConsole()
{
AllocConsole();
SetConsoleTitle("Debug console");
int hConHandle;
long lStdHandle;
FILE *fp; // redirect unbuffered STDOUT to the console
lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
// redirect unbuffered STDIN to the console
lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "r");
*stdin = *fp;
setvbuf(stdin, NULL, _IONBF, 0);
// redirect unbuffered STDERR to the console
lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stderr = *fp;
setvbuf(stderr, NULL, _IONBF, 0);
}
我沒有使用Qt的,但你應該能夠堅持在某個地方,並使其發揮作用。
編輯:添加標題需要
你在Qt中如何做到這一點?你是否同時使用QApplication和QCoreApplication?如果沒有,您是否嘗試過QApplication *應用程序;那麼if(argc == 1)app = new QCoreApplication(...); else app = new QApplication(...);? – emsr 2012-04-18 16:43:31
現在我正在做的是檢查argc,如果> 1我不調用show()並使用一個單獨的構造函數來設置數據,並基本上爲用戶點擊...我不熟悉你上面的東西,我是C++和Qt的新手......是否有兩個完全獨立的類,一個是用gui構造的,另一個是用於控制檯應用程序的構造。導致這看起來像我會做很多重複,我試圖避免 – user1341929 2012-04-18 16:53:35
QCoreApplication是QApplication的基類繼承QCoreApplication。 QCoreApplication用於控制檯應用程序。 (我應該在上面聲明QCoreApplication *應用程序)。我想如果你指定的應用程序像我上面你應該得到一個控制檯應用程序argc == 1和gui應用程序,否則。 – emsr 2012-04-18 18:08:46