Не Qt консольное приложение в Qt Creator - PullRequest
2 голосов
/ 06 июня 2011

Я хочу создать простое консольное приложение ниже в Qt Creator:

#include <iostream>

int main(int argc, char* argv[])
{
   std::cout << "Hello WOrld";

   return 0;
}

Я видел несколько возможных дубликатов на SO, я установил флажок «Запуск в терминале» в настройках запуска.Окно консоли всплывает при CTRL + R, но не отображает «Hello World», просто «Нажмите Enter для выхода».

Выше описано создание пустого проекта.

Я попытался создать «Консольное приложение Qt», которое генерирует приведенный ниже код.Это работает нормально, но я хочу простую версию без Qt выше.

#include <QtCore/QCoreApplication>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    std::cout << "Hello World";

   return a.exec();
}

Ответы [ 4 ]

2 голосов
/ 06 июня 2011

Помимо отметки «Запуск в терминале», вам необходимо добавить «CONFIG + = console» в ваш файл .pro (если вы используете qmake).

TEMPLATE = app

CONFIG += console

SOURCES += main.cpp
1 голос
/ 01 августа 2012

После долгого повторного попытки Qt теперь работает. Файл проекта имеет «CONFIG - = qt» по умолчанию. Я не уверен, что одно это решило бы проблему тогда, но это единственное отличие, которое я вижу.

Полный файл .pro:

TEMPLATE = app
CONFIG += console
CONFIG -= qt

SOURCES += main.cpp
0 голосов
/ 25 сентября 2014

Если вы наткнулись на этот поток, потому что ваше приложение мгновенно завершает работу, и консоль просто показывает «Нажмите enter, чтобы выйти»:

Вот как ведет себя ваше приложение, если вы запускаете его из QtCreatorнайти зависимые библиотеки DLL (кстати, очень бесполезно).Чтобы узнать, чего именно не хватает, вы можете запустить ваше приложение без QtCreator.Зависимые библиотеки DLL должны находиться в одном из мест, перечисленных здесь http://msdn.microsoft.com/de-de/library/7d83bc18.aspx.

0 голосов
/ 06 июня 2011

Единственная ошибка, которую я вижу в этом примере, заключается в том, что поток не сбрасывается (измените строку std :: cout на:

std::cout << "Hello World" << std::endl;

Однако это вряд ли проблема, с которой вы столкнулись, хотя следующий пример, который я нашел в http://www.richelbilderbeek.nl/CppQtHelloWorldConsole.htm, подразумевает, что это действительно проблема с обработкой буфера, когда QtCreator делает некоторые предположения относительно буферизации. (Обратите внимание, что этот URL добавляет вызов std :: cin.get (), что заставляет приложение делать паузу, и, следовательно, вы обязательно должны увидеть какой-то вывод).

...