如果没有为程序提供参数,它将作为GUI应用程序启动,如果给出了args,则通过命令行运行。我能够通过Properties> Linker> SubSystem(Console / SUBSYSTEM:CONSOLE)让visual studio显示并打印到控制台,但是这使得控制台在应用程序启动时始终显示,我如何有选择地显示控制台,以便当使用GUI运行应用程序时,它不会出现。我查看了网站,但我发现的只是如何将它设置为只是一个Windows应用程序,我需要它作为两者兼有
感谢!!!
答案 0 :(得分:4)
我认为这是有效的:
#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
int
main(int n_app_args, char **app_arg)
{
QCoreApplication * application = 0;
if ( n_app_args == 1 )
{
application = new QCoreApplication(n_app_args, app_arg);
}
else
{
application = new QApplication(n_app_args, app_arg);
QMainWindow * mainWindow = new QMainWindow();
mainWindow->show();
}
return application->exec();
}
用参数调用它,你得到一个小(空)窗口。不带参数,没有窗口调用它。
答案 1 :(得分:3)
这里有一些代码,我创建了一个控制台并将输入和输出附加到它:
#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,但是你应该能够坚持到某个地方并让它发挥作用。
编辑:添加了所需的标题
答案 2 :(得分:0)
您可以使用Windows子系统,并在需要控制台时调用AllocConsole,同时应用程序也有gui。