【问题标题】:How to call a slot on quit如何在退出时调用插槽
【发布时间】:2013-03-31 16:26:41
【问题描述】:

我想在我的 Qt 应用程序关闭之前更新我的数据库。

我想要connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))之类的东西 一种方法是引入一个退出按钮,但如果用户按下Alt+F4,是否可以实现此功能?

【问题讨论】:

    标签: c++ qt qt4 signals-slots


    【解决方案1】:

    改用信号aboutToQuit()

    当应用程序即将退出主程序时发出此信号 事件循环,例如当事件循环级别降至零时。这可能 在应用程序内部调用 quit() 之后发生,或者 当用户关闭整个桌面会话时。

    如果您的应用程序必须执行某些操作,该信号特别有用 最后一秒清理。请注意,在此无法进行用户交互 状态。

    例如:

    connect(this, SIGNAL(aboutToQuit()), this, SLOT(updateDatabase()));
    

    【讨论】:

    • 对。但是我的主窗口继承了 QMainWindow,它没有关于ToQuit() 的信号。
    • aboutToQuit() 属于QCoreApplicationQGuiApplication
    【解决方案2】:

    还有另一种方法可以做到这一点,不是aboutToQuit() 信号,而是重新实现 closeEvent(QCloseEvent *event)。您可以在声明event->accept()之前调用您的插槽;

    像这样:

    void MainWindow::closeEvent(QCloseEvent *event)
    {
        call_your_slot_here();
        // accept close event
        event->accept();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多