首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中创建简单的Qt控制台应用程序?

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

Stack Overflow用户
提问于 2010-11-15 07:40:28
回答 6查看 120.6K关注 0票数 83

我试图创建一个简单的控制台应用程序来试用Qt的XML解析器。我在VS2008中启动了一个项目,并获得了以下模板:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    return a.exec();
}

因为我不需要事件处理,所以我想知道如果我忽略了创建QCoreApplication并运行事件循环,我是否会遇到麻烦。文档中指出,在大多数情况下都是推荐的。

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-15 15:06:54

如果你想运行一个事件循环,这里有一种简单的构建应用程序的方法。

代码语言:javascript
复制
// 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();
}
票数 111
EN

Stack Overflow用户

发布于 2010-11-15 12:15:01

别忘了添加

代码语言:javascript
复制
CONFIG += console 

qmake .pro文件中的标志。

因为其余的只是使用一些Qt类。我使用它的一种方式是产生跨平台的进程。

票数 18
EN

Stack Overflow用户

发布于 2010-11-15 08:02:17

您根本不需要QCoreApplication,只需像包含其他对象一样包含您的Qt对象,例如:

代码语言:javascript
复制
#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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4180394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档