我想在Qt应用程序关闭之前更新我的数据库。
我想要connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))
之类的东西
一种方法是引入退出按钮,但如果用户按下Alt+F4
,是否可以实现此功能?
答案 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();
}