#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMetaType>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
i = 0;
m_threadStatusFlag = false;
// 注册信号
qRegisterMetaType<testInfo>("testInfo");
connect(&m_thread,SIGNAL(sendFlagSignal(testInfo)),this,SLOT(threadSlot(testInfo)),Qt::QueuedConnection);
connect(this,SIGNAL(sendThreadStatus(bool)),&m_thread,SLOT(getThreadStatus(bool)));
m_thread.start();
m_threadStatusFlag = true;
emit sendThreadStatus(m_threadStatusFlag);
}
MainWindow::~MainWindow()
{
m_threadStatusFlag = false;
emit sendThreadStatus(m_threadStatusFlag);
if (m_thread.isRunning())
{
m_thread.quit();
m_thread.wait();
}
delete ui;
}
void MainWindow::threadSlot(testInfo struParam)
{
// 槽函数中的struParam就是我们从子线程传递过来的数据,我们可以在主线程中做进一步处理了,
// 可以是做界面展示,或者进一步计算都可以。
qDebug() << "i == " << i;
if (i > 1000)
{
i = 0;
m_threadStatusFlag = false;
emit sendThreadStatus(m_threadStatusFlag);
}
i++;
}
QT使用QThread来实现线程的小例子
需积分: 0 184 浏览量
2023-06-07
10:45:08
上传
评论
收藏 5KB RAR 举报
video_plugin_yue
- 粉丝: 120
- 资源: 6