目录
- 1.要知道主窗口什么时候关闭
- 2.关闭异步线程
1.要知道主窗口什么时候关闭
在widget.h
新增下面的函数
private slots:
void closeEvent(QCloseEvent *event);
在widget.cpp
新增
void Widget::closeEvent(QCloseEvent *event)
{
qDebug() << "关闭主窗口了!";
}
直接运行,关闭程序的时候就能看到Debug输出了。
2.关闭异步线程
异步线程的创建就不多说,反正线程任务一般是一个死循环。例如:
void infiniteLoopTask(void)
{
while (1)
{
/* 循环的任务 */
}
}
在widget.cpp
定义一个全局变量
volatile bool start=1;//线程标志位
主窗口退出函数修改一下
void Widget::closeEvent(QCloseEvent *event)
{
qDebug() << "关闭主窗口了!";
start=0;//退出线程
}
线程修改为
void infiniteLoopTask(void)
{
while (1)
{
if(start==1)//标志位=1,循环执行耗时函数
{
/* 循环的任务 */
}
else//标志位=0,跳出循环,线程执行结束
{
break;
}
}
}