如何在退出时调用一个插槽

时间:2013-03-31 16:26:41

标签: c++ qt qt4 signals-slots

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

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

2 个答案:

答案 0 :(得分:6)

改为使用信号aboutToQuit()

  

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

     

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

例如:

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

答案 1 :(得分:2)

还有另一种方法,不是aboutToQuit()信号,而是重新实施 closeEvent(QCloseEvent *event)。您可以在声明event->accept();

之前给您打电话 像这样:

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