#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
// , thread1(new QThread(this)) // 创建工作线程对象
// , worker1(new Worker()) // 创建新线程
{
ui->setupUi(this);
workerThread = new QThread(this);
worker = new Worker();
worker->moveToThread(workerThread);
// connect(workerThread, &QThread::finished, worker, &QObject::deleteLater);
// connect(this, &Widget::destroyed, workerThread, &QThread::quit);
}
Widget::~Widget()
{
worker->stopWork();
delete ui;
workerThread->quit(); // 退出线程循环
workerThread->wait(); // 等待线程安全退出
QObject::disconnect(workerThread, &QThread::started, worker, &Worker::doWork);
delete workerThread;
delete worker;
}
void Widget::on_pushButton_clicked() //开始
{
worker->startWord();
//启动新线程
//当线程开始执行线程耗时操作
QObject::connect(workerThread, &QThread::started, worker, &Worker::doWork);
workerThread->start();
}
void Widget::on_pushButton_2_clicked() //停止
{
worker->stopWork();
workerThread->quit();
workerThread->wait();
QObject::disconnect(workerThread, &QThread::started, worker, &Worker::doWork);
}
void Worker::doWork()
{
qDebug() << "QThread..."<<QThread::currentThreadId();
qDebug() << "m_stop1..."<<m_stop;
static int num = 0;
while (!m_stop) {
qDebug() << "Working..."<<num++<<m_stop;
QThread::sleep(1);
}
qDebug() << "m_stop2..."<<m_stop;
}
void Worker::stopWork()
{
m_stop = true;
}
void Worker::startWord()
{
m_stop = false;
}
没有合适的资源?快使用搜索试试~ 我知道了~
Qt 多线程采用继承QObject方式编写
共6个文件
cpp:2个
h:1个
pro:1个
需积分: 0 0 下载量 178 浏览量
2024-03-18
16:55:09
上传
评论
收藏 4KB RAR 举报
温馨提示
Qt 多线程采用继承QObject方式编写、
资源推荐
资源详情
资源评论
收起资源包目录
tcp_test.rar (6个子文件)
tcp_test
widget.ui 984B
widget.cpp 2KB
main.cpp 175B
tcp_test.pro.user 19KB
tcp_test.pro 602B
widget.h 788B
共 6 条
- 1
资源评论
鼎鼎_home
- 粉丝: 15
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功