zoukankan      html  css  js  c++  java
  • QThread

    #ifndef MYTHREAD_H
    #define MYTHREAD_H
    #include<QThread>
    
    
    class MyThread : public QThread
    {
        Q_OBJECT
    public:
        explicit MyThread(QObject *parent = 0);
        void run();
        bool Stop;
    
    
    signals:
        void NumberChanged(int);
    public slots:
    
    
    };
    
    
    #endif // MYTHREAD_H

      

    #ifndef DIALOG_H
    #define DIALOG_H
    
    #include "mythread.h"
    #include <QDialog>
    #include<QLabel>
    
    namespace Ui {
    class Dialog;
    }
    
    class Dialog : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit Dialog(QWidget *parent = 0);
        ~Dialog();
        MyThread *mThread;
    
    private:
        Ui::Dialog *ui;
    
    public slots:
        void  onNumberChanged(int);
    private slots:
        void on_pushButton_clicked();
        void on_pushButton_2_clicked();
    };
    
    #endif // DIALOG_H
    

      

    #include "dialog.h"
    #include "ui_dialog.h"
    #include<QLabel>
    
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Dialog)
    {
        ui->setupUi(this);
        mThread = new MyThread(this);
        connect(mThread,SIGNAL(NumberChanged(int)),this, SLOT(onNumberChanged(int)));
    
    }
    
    Dialog::~Dialog()
    {
        delete ui;
    }
    
    void Dialog::onNumberChanged(int Number)
    {
        ui->label->setText(QString::number(Number));
    }
    
    void Dialog::on_pushButton_clicked()
    {
        //started
        mThread->start();
    }
    
    void Dialog::on_pushButton_2_clicked()
    {
        mThread->Stop = true;
    }
    

      

    #include "dialog.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Dialog w;
        w.show();
    
        return a.exec();
    }
    

      

    #include "mythread.h"
    #include <QThread>
    MyThread::MyThread(QObject *parent) : QThread(parent)
    {
    
    }
    
    void MyThread::run()
    {
        this->Stop = false;
        for(int i = 0; i < 10000;i++)
        {
            QMutex mutex;
            mutex.lock();
            if(this->Stop) break;
            mutex.unlock();
    
            emit NumberChanged(i);
    
            this->msleep(1000);
        }
    }
    

      

  • 相关阅读:
    持续集成
    持续集成
    持续集成
    持续集成
    持续集成
    持续集成
    CuDNNLSTM: UnknownError: Fail to find the dnn implementation
    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
    django nginx uwsgi 502 Gateway
    ubuntu nginx 启动多个Django项目
  • 原文地址:https://www.cnblogs.com/my-cat/p/6183418.html
Copyright © 2011-2022 走看看