当我想要退出应用程序时,如何在qt中自动调用析构函数?

时间:2017-02-18 09:04:57

标签: c++ qt

我将CAMA系列(指纹模块)用于我的应用程序。在该文档中,它表示建议在退出应用程序之前使用EnrollStandByMode命令。我创建了这个命令,并在我的应用程序中的QMainWindow上的析构函数中调用它。 (这里没有问题)。但是当我退出应用程序并再次运行它时,我的指纹会混淆并且响应命令不正确。在跟踪我的代码之后,我看到当应用程序以关闭按钮关闭时,析构函数不会运行。

这是我退出qapp的代码。

void MainWindow::on_pushButton_clicked()
{
    qDebug()«"QApplication::quit()";
    QApplication::quit();
}  

我想知道在退出应用程序之前如何调用析构函数?

1 个答案:

答案 0 :(得分:7)

有几种方法可以在应用程序结束时调用某些内容。

如果您的代码不需要运行Qt事件循环,只需在main()

结束时调用该函数
int main(int argc, char **argv)
{
    QApplication app(argc, argv); // or QGuiApplication/QCoreApplication

    // application setup

    const int resultCode = app.exec();

    // call your shutdown code here

    return resultCode;
}

另一种选择是注册一个由qAddPostRoutine()注册的函数,该函数由Qt应用程序对象的析构函数调用。

如果需要Qt事件循环,请将函数连接到Qt应用程序对象的aboutToQuit()信号。