(QT)QThread实验

一、概念

QThread是Qt框架中用于实现多线程编程的类。它提供了一种方便的方式来在应用程序中创建和管理线程,使得开发者能够更轻松地编写多线程应用程序。

QThread类的主要作用是封装了底层操作系统的线程管理机制,并提供了一些方便的方法,例如start()、wait()、sleep()、quit()等,可以用于线程的创建、启动、等待和终止。

在使用QThread时,通常需要继承QThread类,并重写其run()方法,在run()方法中编写线程执行的代码。

二、编程实验

.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 

class MyThread;

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;
    MyThread *myThread;
};

class MyThread:public QThread
{
    Q_OBJECT

public:
    MyThread(QWidget *parent = nullptr){
        Q_UNUSED(parent);
    }
    ~MyThread(){
        qDebug()<<"线程销毁资源释放"<

.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    //一个应用程序至少要一个进程,QProcess
    //一个进程至少会有一个线程,QThread|
    ui->setupUi(this);
    myThread = new MyThread(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    //system("sleep 5");
    //system("ping 192.168.1.1");//windous下延时几秒

    //启动线程
    //myThread->start();

    MyThread * testThread=new MyThread(this);
    testThread->start();
}

void Widget::on_pushButton_2_clicked()
{
    //启动线程
    //if (!myThread->isFinished())
    //终止线程
    //myThread->terminate();
}

你可能感兴趣的:(QT学习笔记,qt,开发语言)