文章标题
2016-05-25 19:39
323 查看
qt中的多线程
最近学习到qt里面的多线程,传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作。在多线程应用程序中,图形用户界面运行于它自己的线程中,而另外的事件处理过程则会发生在一个或多个其它线程中。好处优点就是:当处理那些数据密集的事件时,应用程序也能对图形用户界面保持相应。
一个例题,贡献给大家
!自己添加的pushbutton
创建线程 QThread
在Qt应用程序中提供多线程是简单的:只需要子类化QThread,然后重新实现自定义的子类.
};
对该子类的实现`#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 <
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();
private:
Ui::MainWindow *ui;
Thread threadA;//
Thread threadB;//
};
最近学习到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
相关文章推荐
- 一段js动态操作table代码
- 数据挖掘中的集成方法——通过集成预测来提升精度(读书笔记)
- 利用getHibernateTemplate实现简单的操作
- 轻量web服务器开发日记03-bufstr结构体的实现
- 为svn添加hook脚本-changed用法
- JavaScript学习--Item2 浮点数精度
- 错误让你崩溃了吗?
- 欢迎使用CSDN-markdown编辑器
- SHOPNC 插件机制的实现记录
- Android图像处理(三) 刮刮卡
- 行验证方法失败
- Android 天气预报
- POJ 2096 Collecting Bugs
- 2.6 MYSQL的输出格式
- codeforces56
- UI控件大全
- 51nod百度之星2016练习赛
- 【NOIP2013模拟】Freda的传呼机
- Arm开发板+Qt学习之路-论can网通讯受log日志的影响
- mysql_基础2