简单的QT多线程开发

创建一个线程类,在主窗口中对信号和槽函数进行绑定。VS中一个Windows的API即可,QT一定要自己创建类,真是麻烦。

线程类头文件:

#ifndef TESTTHREAD_H
#define TESTTHREAD_H
#include <QThread>

class MyThread:public QThread
{
    Q_OBJECT
public:
    explicit MyThread();
    ~MyThread();

signals:
  void MsgSignal(const QString& tep);//用于向主线程传递字符串

protected:
  void run();//run 中的内容才是子线程中执行的内容!

};

#endif // TESTTHREAD_H

线程类源文件:

#include "thread.h"

MyThread::MyThread()
{

}

MyThread::~MyThread()
{

}

void MyThread::run()
{
  QString tep("test");
  emit MsgSignal(tep);
}

主窗口槽函数和线程类中的信号函数进行绑定,绑定之后即可通信:

主窗口头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "thread.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void OnMsgSignal(const QString& tep2);//接受子线程传递字符串用于显示

private:
    Ui::MainWindow *ui;
    MyThread* m_thread;
};

#endif // MAINWINDOW_H

主窗口源文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_thread= new MyThread();
    connect(m_thread, SIGNAL(MsgSignal(const QString&)),this, SLOT(OnMsgSignal(const QString&)));//此处connect的第五个参数默认变成Qt::QueuedConnection
    m_thread->start();

}

MainWindow::~MainWindow()
{

    delete ui;
}

void MainWindow::OnMsgSignal(const QString& tep2)
{
    //使用子线程传递来的tep2
    int i=0;
    i++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古道青阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值