下面是一些代码,我已经躺在附近,创建一个控制台和附加的输入和输出是:
#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