4

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

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

4

2 回答 2

6

改用信号aboutToQuit()

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

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

例如 :

connect(this, SIGNAL(aboutToQuit()), this, SLOT(updateDatabase()));
于 2013-03-31T16:32:53.580 回答
2

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

像这样:

void MainWindow::closeEvent(QCloseEvent *event)
{
    call_your_slot_here();
    // accept close event
    event->accept();
}
于 2013-04-01T01:35:28.150 回答