Qt 中线程QThread的简单使用
来源:互联网 发布:手机怎么给淘宝差评 编辑:程序博客网 时间:2024/05/01 05:58
实验说明: 将一个循环放到线程里运行,同时将信息显示在主界面上,使得主界面不卡。
1 main.cpp
#include <QtGui/QApplication>#include "dialog.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); Dialog w; w.show(); return a.exec();}2 dialog.h
#ifndef DIALOG_H#define DIALOG_H#include <QThread>#include <QtCore>#include <QtGui>#include"mythread.h"namespace Ui { class Dialog;}class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = 0); ~Dialog();private slots: void on_StartPthread_clicked(); void on_StopPthread_clicked(); void GetPthreadMessage(QString);private: MyThread thread; Ui::Dialog *ui;};#endif // DIALOG_H3 dialog.cpp
#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); connect(&thread,SIGNAL(sendMessage(QString)),this,SLOT(GetPthreadMessage(QString))); this->setFixedSize(300,100);}Dialog::~Dialog(){ delete ui;}void Dialog::GetPthreadMessage(QString recv){ ui->lineEdit->setText(recv); qDebug()<<recv;}void Dialog::on_StartPthread_clicked(){ thread.start(); //就会调用 MyThread里的run函数 ui->StartPthread->setEnabled(false); ui->StopPthread->setEnabled(true);}void Dialog::on_StopPthread_clicked(){ if(thread.isRunning()) { thread.stop(); //就会调用 MyThread里的stop函数 ui->StartPthread->setEnabled(true); ui->StopPthread->setEnabled(false); }}4 mythread.h
#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QtGui>#include <QtCore>class MyThread : public QThread{ Q_OBJECTpublic: explicit MyThread(QObject *parent = 0); void run(); void stop(); bool stopped; QString myString; signals: void sendMessage(QString);//sendMessage为自定义信号public slots:};#endif // MYTHREAD_H5 mythread.cpp
#include "mythread.h"MyThread::MyThread(QObject *parent) : QThread(parent){ stopped=false;}void MyThread::run(){ qreal i=0; while(!stopped) { qDebug()<<QString("in MyThread:%1").arg(i++); myString=QString("in MyThread:%1").arg(i++); emit sendMessage(myString); this->msleep(100); //如果不用msleep等函数延时,主界面会卡住. } stopped=!stopped;}void MyThread::stop(){ stopped=true;}
6 效果图
线程开始
线程停止
0 0
- Qt 中线程QThread的简单使用
- QT线程QThread的简单使用实例
- Qt::QThread->线程的使用
- Qt线程(QThread)的使用/简介
- QThread QT线程使用案例
- Qt中利用QThread在线程中同步使用QFtp
- QT中使用另外的线程运行定时器(不用新建QThread子类)
- qt线程类---QThread
- Qt线程QThread简析
- Qt线程(QThread)
- QT中的线程QThread
- Qt之线程QThread
- QT 中如何正确使用QThread
- Qt中QThread线程与主线程的数据传送以及lineEdit的显示
- Qt线程的简单使用
- 在Qt中如何实现QThread线程同步QFtp
- qt线程 qthread(转)
- QT——QThread线程
- /tmp/cc2v1c0x.o: In function `main':
- js 实现多态
- CF 444B(DZY Loves FFT-时间复杂度)
- java的特性
- poj-1860
- Qt 中线程QThread的简单使用
- 求2个日期之间的差,显示X年X月X日
- storyboard相关
- 瀏覽器緩存
- [学习笔记]--Jfinal 表单提交附件
- 关于编程语言
- 如何写一篇好的技术博客
- Intent的基本用法
- 面试算法(十)数值的整数次方