QApplication::notify not called



我想在QApplication::notify例程中捕获未捕获的异常以优雅地关闭。但是应用程序崩溃了

我在Windows上使用Qt 5.6和mingw 5.3.0 x64。

你知道我做错了什么吗?

#include <QApplication>
#include <QObject>
#include <QtDebug>
#include <QTimer>
class TestApplication Q_DECL_FINAL : public QApplication
{
    Q_OBJECT
public:
    TestApplication(int &argc, char **argv) : QApplication(argc, argv) {}
    bool notify(QObject *receiver, QEvent *event) {
        try {
            return QApplication::notify(receiver, event);
        } catch(std::exception& e) {
            qCritical() << qPrintable(QString("Exception thrown: %1").arg(e.what()));
        }
        return false;
    }
};
#include "main.moc"
int main(int argc, char *argv[])
{
    TestApplication a(argc, argv);
    QTimer timer;
    timer.setSingleShot(true);
    QObject::connect(&timer, &QTimer::timeout, []() {
        throw 1;
    });
    timer.start(5000);
    return a.exec();
}

尝试使用一个实际的异常对象而不是int。比如'throw std::exception()'。

相关内容

  • 没有找到相关文章

最新更新