如何在C ++中创建一个简单的Qt控制台应用程序?

时间:2010-11-14 23:40:28

标签: c++ qt console

我试图创建一个简单的控制台应用程序来试用Qt的XML解析器。我在VS2008中开始了一个项目并得到了这个模板:

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

    return a.exec();
}

由于我不需要事件处理,我想知道如果我忽略创建QCoreApplication并运行事件循环,是否会遇到麻烦。文档声明它在大多数情况下都是推荐的。

然而,为了好奇,我想知道如何在事件循环上执行一些通用任务然后终止应用程序。我无法谷歌相关的例子。

7 个答案:

答案 0 :(得分:92)

如果您希望运行事件循环,可以使用以下一种简单的方法来构建应用程序。

// 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();
}

答案 1 :(得分:18)

不要忘记添加

CONFIG += console 

在qmake .pro文件中标记。

其余的只是使用一些Qt类。 我使用它的一种方法是跨平台生成流程。

答案 2 :(得分:4)

您根本不需要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;
}

答案 3 :(得分:3)

我设法用QT Creator

创建一个简单的控制台“hello world”

在Windows 7上使用了创建者2.4.1和QT 4.8.0

两种方法

Plain C ++

执行以下操作

  1. 文件 - 新文件项目
  2. 项目下选择:其他项目
  3. 选择“Plain C ++ Project”
  4. 输入项目名称 5.Targets选择桌面'勾选'
  5. 项目管理只需点击下一步
  6. 您可以使用c ++命令作为普通的c ++
  7. QT控制台

    1. 文件 - 新文件项目
    2. 项目下选择:其他项目
    3. 选择QT控制台应用程序
    4. 目标选择桌面'勾选'
    5. 项目管理只需点击下一步
    6. 添加以下行(所有C ++包括您需要的)
    7. 添加“#include'iostream'”
    8. 添加“using namespace std;”
    9. 在QCoreApplication之后a(int argc,cghar * argv []) 10添加变量和程序代码..
    10. 示例:对于QT控制台“hello world”

      file - 新文件项目'项目名称'

      其他项目 - QT控制台应用程序

      目标选择'桌面'

      项目管理 - 下一步

      代码:

          #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以获取信息和示例以开始使用仍在搜索的简单示例......

答案 4 :(得分:1)

您可以调用QCoreApplication :: exit(0)退出代码0

答案 5 :(得分:0)

即使没有connect(),您也可以将事件触发到应用程序的quit()插槽中。 这样,事件循环至少旋转一圈,并应在main()-logic中处理事件:

#include <QCoreApplication>
#include <QTimer>

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

    // do your thing, once

    QTimer::singleShot( 0, &app, &QCoreApplication::quit );
    return app.exec();
}

请不要忘记将CONFIG += console放在.pro文件中,或将consoleApplication: true放在.qbs Project.CppApplication中。

答案 6 :(得分:-1)

有同样的问题。在Youtube上发现了一些视频。 所以这是一个更简单的建议。这是您需要的所有代码:

#include <QDebug>

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

以上代码来自 Qt5教程:通过

构建一个简单的控制台应用程序

Dominique Thiebaut

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