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

标签 c++ qt console

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

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

    return a.exec();
}

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

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

最佳答案

如果您希望事件循环运行,这是一种构建应用程序的简单方法。

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

关于c++ - 如何在 C++ 中创建一个简单的 Qt 控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180394/

相关文章:

c++ - Eigen LLT 模块给出不正确的结果?

qt - 如何在 QQuickPaintedItem 中以有效的方式绘制顺序图像

c++ - QList children - 从 QObject 派生的结构或自定义类?

java - 所以我刚刚开始在treehouse.com学习java,我已经完成了基础知识,但是当我尝试在intellij idea ide上学到的所有东西时,没有任何效果

c++ - 如何允许控制台程序接受来自回调函数的数据

C++:使用 wstring 切换的替代方法

c++ - 为什么 sgi STL 源代码在 operator new 函数前面使用双冒号?

c++ - 有效的成员指针可以与 NULL 指针具有相同的值吗?

qt - 设置QComboBox的选定项目

自动关闭控制台的C++代码