我试图创建一个简单的控制台应用程序来试用 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/