【发布时间】:2013-03-31 16:26:41
【问题描述】:
我想在我的 Qt 应用程序关闭之前更新我的数据库。
我想要connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))之类的东西
一种方法是引入一个退出按钮,但如果用户按下Alt+F4,是否可以实现此功能?
【问题讨论】:
标签: c++ qt qt4 signals-slots
我想在我的 Qt 应用程序关闭之前更新我的数据库。
我想要connect(this, SIGNAL(quit()), this, SLOT(updateDatabase()))之类的东西
一种方法是引入一个退出按钮,但如果用户按下Alt+F4,是否可以实现此功能?
【问题讨论】:
标签: c++ qt qt4 signals-slots
改用信号aboutToQuit()。
当应用程序即将退出主程序时发出此信号 事件循环,例如当事件循环级别降至零时。这可能 在应用程序内部调用 quit() 之后发生,或者 当用户关闭整个桌面会话时。
如果您的应用程序必须执行某些操作,该信号特别有用 最后一秒清理。请注意,在此无法进行用户交互 状态。
例如:
connect(this, SIGNAL(aboutToQuit()), this, SLOT(updateDatabase()));
【讨论】:
aboutToQuit() 属于QCoreApplication 或QGuiApplication。
还有另一种方法可以做到这一点,不是aboutToQuit() 信号,而是重新实现 closeEvent(QCloseEvent *event)。您可以在声明event->accept()之前调用您的插槽;
像这样:
void MainWindow::closeEvent(QCloseEvent *event)
{
call_your_slot_here();
// accept close event
event->accept();
}
【讨论】: