我想在我的 Qt 应用程序关闭之前更新我的数据库。
我想要类似的connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))
一种方法可能是引入一个退出按钮,但是如果用户按下,是否可以实现此功能Alt+F4
?
我想在我的 Qt 应用程序关闭之前更新我的数据库。
我想要类似的connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))
一种方法可能是引入一个退出按钮,但是如果用户按下,是否可以实现此功能Alt+F4
?
改用信号aboutToQuit()
。
当应用程序即将退出主事件循环时发出此信号,例如当事件循环级别降至零时。这可能发生在从应用程序内部调用 quit() 之后,或者当用户关闭整个桌面会话时。
如果您的应用程序必须在最后一秒进行清理,则该信号特别有用。请注意,在此状态下无法进行任何用户交互。
例如 :
connect(this, SIGNAL(aboutToQuit()), this, SLOT(updateDatabase()));
还有另一种方法可以做到这一点,不是aboutToQuit()
信号,而是重新实现closeEvent(QCloseEvent *event)
. 您可以在声明之前调用您的插槽event->accept()
;
像这样:
void MainWindow::closeEvent(QCloseEvent *event)
{
call_your_slot_here();
// accept close event
event->accept();
}