小编fgi*_*eau的帖子

QCoreApplication忽略退出信号并挂起

当在启动事件循环之前同步触发信号QCoreApplication :: quit()时,将忽略该信号并且应用程序将永久挂起.但是,从QTimer触发,应用程序正确退出.在启动exec循环之前启动可以立即返回的任务的正确方法是什么?

以下是重现此行为的最小代码:

hang.h

#ifndef HANG_H
#define HANG_H

#include <QObject>

class hang : public QObject
{
    Q_OBJECT
public:
    explicit hang(QObject *parent = 0);

signals:
    void done();
public slots:
    void foo();
};

#endif // HANG_H
Run Code Online (Sandbox Code Playgroud)

hang.cpp

#include "hang.h"
#include <iostream>

hang::hang(QObject *parent) :
    QObject(parent)
{
}

void hang::foo()
{
    std::cout << "foo emit done()" << std::endl;
    emit done();
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <QCoreApplication>
#include <QTimer>
#include <hang.h>

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

    QObject::connect(&obj, SIGNAL(done()), &app, …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtcore

2
推荐指数
1
解决办法
2908
查看次数

标签 统计

c++ ×1

qt ×1

qtcore ×1