目录
- 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;}}
}