qt中使用函数QObject::moveToThread(QThread *thread)实现多线程
1.首先创建一个类Myobject,基类为QObject
2.在类Myobject中创建一个槽函数,用于运行多线程里面的代码。耗时全部在这个槽函数里面运行
3.实例一个QThread线程对象
4.使用moveToThread
5.创建信号槽,started和finished
6.启动函数QThread::start()开启多线程
void Myobject::doSomethingSlot()
{
while(1)
{
if(m_bStop)
return;
qDebug() << "111";
QThread::sleep(1);
}
}
void Myobject::stopSlot()
{
QMutexLocker locker(&m_lock);
m_bStop = true;
}
m_pmyobject = new Myobject;
m_pmyThread = new QThread;
m_pmyobject->moveToThread(m_pmyThread);
connect(m_pmyThread, &QThread::started, m_pmyobject, &Myobject::doSomethingSlot);
connect(m_pmyThread, &QThread::finished, m_pmyobject, &Myobject::deleteLater);
void MainWindow::on_pushButton_clicked()//开启线程
{
m_pmyThread->start();
}
void MainWindow::on_pushButton_2_clicked()//关闭线程
{
if(m_pmyThread->isRunning())
{
m_pmyobject->stopSlot(); //关闭线程槽函数
m_pmyThread->quit(); //退出事件循环
m_pmyThread->wait(); //释放线程槽函数资源
}
}

浙公网安备 33010602011771号