珠海建设企业网站,古典风格网站模版,搜索引擎排名优化程序,青柠视频免费观看高清视频目录
问题背景#xff1a;
aboutToQuit
代码举例
closeEvent事件
代码举例
程序退出方式
quit() exit(int returnCode 0) close() 问题背景#xff1a; 实际项目中程序退出前往往需要及进行一些资源释放、配置保存、线程中断等操作#xff0c;避免资源浪费#xff…目录
问题背景
aboutToQuit
代码举例
closeEvent事件
代码举例
程序退出方式
quit() exit(int returnCode 0) close() 问题背景 实际项目中程序退出前往往需要及进行一些资源释放、配置保存、线程中断等操作避免资源浪费配置参数丢失等但是Qt程序默认的退出方式并不能释放主动申请的这些资源因此在程序关退出前需要主动进行资源回收和记录退出方式等。
aboutToQuit aboutToQuit信号是QCoreApplication类的一个信号它在应用程序即将退出时发出。这个信号对于在应用程序关闭前执行一些清理工作非常有用比如保存设置、释放资源等。 使用场景通常连接到一个槽函数用于处理应用程序退出前的清理工作。
代码举例
通过连接 aboutToQuit信号到资源释放槽函数从而达到在程序退出前进行资源释放操作。
int main(int argc, char *argv[])
{QApplication a(argc, argv);THWritterTool w;w.show();QObject::connect(qApp, QCoreApplication::aboutToQuit, []() {cLogger(THWritterTool)-info(THWritterTool程序正常退出!);w.Destroy();ReleaseResource();});int ret a.exec();//在事件循环结束后进行一些资源释放 一些非正常退出无aboutToQuit信号releaseResource();return ret;
}
closeEvent事件 closeEvent是QWidget类的一个事件处理函数当窗口关闭时Qt会调用这个函数。通过重写主界面的这个函数可在窗口关闭前执行一些自定义的操作比如询问用户是否真的要关闭窗口或者保存未保存的数据。
代码举例
void THWritterTool::closeEvent(QCloseEvent * event)
{if (!m_AuthorithyVertify){QTHMessageBox::TimerMessage(this, QMessageBox::Critical, QObject::tr(授权未验证通过程序即将退出!), 15 * 1000);cLogger(THWritterTool)-info(授权未验证通过退出);}else if (m_switchDB){QTHMessageBox::TimerMessage(this, QTHMessageBox::Critical, QObject::tr(数据库已切换程序即将退出!), 15 * 1000);cLogger(THWritterTool)-info(切换数据库程序退出);}else{if (m_savingCfg){QTHMessageBox::TimerMessage(this, QTHMessageBox::Warning, QObject::tr(正在保存配置文件无法退出。), 15 * 1000);event-ignore();//忽略退出事件return;}ret QTHMessageBox::question(this, tr(是否要退出程序), QTHMessageBox::Yes | QTHMessageBox::No);if (ret QTHMessageBox::Yes){cLogger(THWritterTool)-info(用户手动确认退出);}}cLogger(THWritterTool)-info(正常退出);g_pTHSplashScreen-show();//启动画面qApp-processEvents();//保证退出时候展示启动画面事件可运行 避免卡死Destroy();event-accept();//接收事件 不在传递
}
程序退出方式
quit() • quit()是QCoreApplication类以及继承自它的QApplication类的一个静态函数用于退出整个Qt应用程序。 • 当调用quit()时它会退出主事件循环触发QApplication::exec()返回并关闭所有打开的窗口。程序会完全终止。 • quit()通常用于在应用程序中实现“退出”功能比如在菜单项的“退出”操作上绑定这个函数。 • quit()作为槽函数也可以连接信号和槽响应某个信号后关闭应用程序。 • 调用quit后程序在退出前会触发aboutToQuit信号 exit(int returnCode 0) • exit()和quit()类似也是用于退出应用程序。 • exit()可以指定一个返回代码returnCode该代码将在应用程序退出时返回给操作系统。 • 它同样会结束主事件循环并关闭所有窗口。 • exit()更适合在需要返回特定退出代码的场景中使用。 • 调用exit后程序在退出前会触发aboutToQuit信号 close() • close()是QWidget类的成员函数用于关闭单个窗口或控件。 • 调用close()会尝试关闭该窗口或控件关闭前会触发closeEvent()事件。如果该窗口是主窗口且所有子窗口都已关闭应用程序会退出退出前会触发和aboutToQuit信号。 • close()适用于关闭单个窗口或控件的场景比如“关闭”按钮的操作。 • 当用户点击窗口右上角的“X”按钮时系统也会自动调用该窗口的close()函数。