Подтвердить что ты не робот

Как создать простое консольное приложение Qt в С++?

Я пытался создать простое консольное приложение, чтобы опробовать Qt XML-парсер. Я начал проект в VS2008 и получил этот шаблон:

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

    return a.exec();
}

Поскольку мне не нужна обработка событий, мне было интересно, могу ли я попасть в проблему, если я пренебрег созданием QCoreApplication и запуском цикла событий. Документы утверждают, что он рекомендуется в большинстве случаев.

Однако, ради любопытства, мне интересно, как я могу выполнить некоторую общую задачу в цикле событий, а затем завершить работу приложения. Мне не удалось найти подходящий пример Google.

4b9b3361

Ответ 1

Вот простой способ структурировать приложение, если вы хотите, чтобы цикл цикла работал.

// main.cpp
#include <QtCore>

class Task : public QObject
{
    Q_OBJECT
public:
    Task(QObject *parent = 0) : QObject(parent) {}

public slots:
    void run()
    {
        // Do processing here

        emit finished();
    }

signals:
    void finished();
};

#include "main.moc"

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

    // Task parented to the application so that it
    // will be deleted by the application.
    Task *task = new Task(&a);

    // This will cause the application to exit when
    // the task signals finished.    
    QObject::connect(task, SIGNAL(finished()), &a, SLOT(quit()));

    // This will run the task from the application event loop.
    QTimer::singleShot(0, task, SLOT(run()));

    return a.exec();
}

Ответ 2

Не забудьте добавить

CONFIG += console 

в файле qmake.pro.

Остальное - это просто использование некоторых классов Qt. Один из способов, которым я использую это, - это запустить процессы кросс-платформенного.

Ответ 3

Вам вообще не нужен QCoreApplication, просто включите объекты Qt, как и другие объекты, например:

#include <QtCore>

int main()
{
    QVector<int> a; // Qt object

    for (int i=0; i<10; i++)
    {
        a.append(i);
    }

    /* manipulate a here */

    return 0;
}

Ответ 4

Мне удалось создать простую консоль "hello world" с QT Creator

используемый создатель 2.4.1 и QT 4.8.0 для Windows 7

два способа сделать это

Обычный С++

выполните следующие действия

  • Файл-новый проект
  • под проектами select: other Project
  • выберите "Обычный проект на С++"
  • введите название проекта 5.Targets выберите Desktop 'tick it'
  • Управление проектами просто нажмите Далее
  • вы можете использовать команды С++ как обычные С++

или

Консоль QT

  • Файл-новый проект
  • под проектами select: other Project
  • выберите консольное приложение QT
  • Цели выберите Рабочий стол 'tick it'
  • Управление проектами просто нажмите Далее
  • добавьте следующие строки (все необходимые вам С++)
  • добавить "#include" iostream '"
  • добавить "using namespace std;"
  • после QCoreApplication a (int argc, cghar * argv []) 10 добавьте переменные и ваш программный код.

пример: для консоли QT "привет мир"

file - имя проекта нового проекта проекта

другие проекты - консольное приложение QT

Цели выбирают "Рабочий стол"

управление проектами - next

код:

    #include <QtCore/QCoreApplication>
    #include <iostream>
    using namespace std;
    int main(int argc, char *argv[])
    {
     QCoreApplication a(argc, argv);
     cout<<" hello world";
     return a.exec();
     }

ctrl -R для запуска

используемые для выше MSVC 2010 (QT SDK) и minGW (QT SDK)

надеюсь, что это поможет кому-то

Поскольку я только недавно начал использовать QT, а также искал Www для информации и примеров, чтобы начать работу с простыми примерами, которые все еще ищут...

Ответ 5

Вы можете вызвать QCoreApplication:: exit (0) для выхода с кодом 0

Ответ 6

Была та же проблема. нашел несколько видео на Youtube. Итак, вот еще более простое предложение. Это код, который вам нужен:

#include <QDebug>

int main(int argc, char *argv[])  
{
   qDebug() <<"Hello World"<< endl;
   return 0;
}

Вышеприведенный код Учебное пособие по Qt5: создание простого консольного приложения

Доминик Тибаут

http://www.youtube.com/watch?v=1_aF6o6t-J4