您的位置:首页 > 其它

文章标题

2016-05-25 19:39 323 查看
qt中的多线程

最近学习到qt里面的多线程,传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作。在多线程应用程序中,图形用户界面运行于它自己的线程中,而另外的事件处理过程则会发生在一个或多个其它线程中。好处优点就是:当处理那些数据密集的事件时,应用程序也能对图形用户界面保持相应。

一个例题,贡献给大家



!自己添加的pushbutton

创建线程 QThread

在Qt应用程序中提供多线程是简单的:只需要子类化QThread,然后重新实现自定义的子类.

#ifndef THREAD_H
#define THREAD_H
#include<time.h>
#include <QThread>
#include <QDebug>
#include <QMutex>
#include <iostream>
class Thread : public QThread//定义自己的QThread子类
{
Q_OBJECT
public:
explicit Thread(QObject *parent = 0);
void setMessage(QString message);
void stop();
protected:
void run();
void printMessage();
private:
QString messageStr;//该子类的特性
volatile bool stopped;//该子类的特性
QMutex mutex;//该子类的特性
signals:

public slots:
`

};
#endif // THREAD_H


};

对该子类的实现`#include “Thread.h”

using namespace std;

Thread::Thread(QObject *parent) :

QThread(parent)

{

stopped = false;

}

//run()由start()函数调用

void Thread::run()

{

forever{

mutex.lock();

if(stopped){

stopped = false;

mutex.unlock();

break;

}

mutex.unlock();

// std::cerr <

define MAINWINDOW_H

include

include”Thread.h”

include

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

protected:

void closeEvent(QCloseEvent *event);

private slots:

void on_threadAButton_clicked();

void on_threadBButton_clicked();

void on_quitButton_clicked();


private:

Ui::MainWindow *ui;

Thread threadA;//

Thread threadB;//

};

endif // MAINWINDOW_H

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: