1.头文件:
#include<QThread> 2.在.h文件中定义全局:
QThread* threadTraj;
void threadTrajProcess();//回调函数
3.在.cpp文件中:
threadTraj = new QThread();//初始化
//连接槽函数
QObject::connect(threadTraj, &QThread::started, this, MainForm::threadTrajProcess);
4.线程处理
void MainForm::threadTrajProcess() {while(startTask){cameraTraj->g_disply_fps++;if(!qImageForTraj.isNull())//开始任务{UsePythonFindTrack();}//QThread::msleep(10);//会阻塞线程,会影响到用户界面的响应性。QEventLoop loop;//非阻塞延时QTimer::singleShot(10, &loop, SLOT(quit())); // 等待0.01秒后退出循环loop.exec(); // 进入事件循环等待} }
5。按键 开始/停止 任务
void MainForm::on_btnStartWork_clicked()
{
if(startTask==false)//开始
{
ui->btnStartWork->setText("结束任务");
ui->btnStartWork->setStyleSheet(ui->btnStartWork->styleSheet()+ "QToolButton{ color: red;}"); //修改按键颜色
startTask=true;
threadTraj->start(); // 启动线程
}
else
{
ui->btnStartWork->setText("开始任务");
ui->btnStartWork->setStyleSheet(ui->btnStartWork->styleSheet()+ "QToolButton{color: blue;}");
startTask=false;
threadTraj->quit();
UseGetTrackGoal();
}
}
6.销毁
//关闭
void MainForm::on_btnMenu_Close_clicked()
{
if(startTask)
{
startTask=false;
threadTraj->quit();
}
close();
}