一个QThread例子

//threadTest.h 
#ifndef THREADTEST_H 
#define THREADTEST_H

#include <qthread.h> 
#include "test.h"

class MyThread : public QThread 
{  
    protected : 
    virtual void run(); 
};

MyThread myThread;

void Test::newSlot() 

    myThread.start(); 
}

#endif

//threadTest.cpp

#include <QDialog>

void MyThread::run() 

    for(int i=0;i <100;i++) 
    {
    printf("new value i is:%d",i); 
    //QMessageBox::information(this,tr("info"),tr("load dll OK!"));
    //QMessageBox::information(this, tr("Empty Search "),"click Find.");
    //Test m; 
    //m.show();
    qDebug("mhf");
    }
    /*
    QDialog *dialog = new QDialog(0,”popup”,FALSE);
    dialog->setCaption(“A QDialog Window”);
    dialog->setMinimumSize(200,80);
    dialog->setMaximumSize(200,80);
    dialog->show();    
    */
}

/

//test.cpp

#include "test.h"

#include <qvariant.h> 
#include <qlineedit.h> 
#include <qpushbutton.h> 
#include <qtextedit.h> 
#include <qlayout.h> 
#include <qtooltip.h> 
#include <qwhatsthis.h> 
#include <qimage.h> 
#include <qpixmap.h> 
#include <QVBoxLayout>

/* 
*  Constructs a Test as a child of 'parent', with the 
*  name 'name' and widget flags set to 'f'. 
*/ 
Test::Test( QWidget* parent ): QWidget( parent=0 ) 

    this->setWindowTitle("w");     
    this->resize(250, 50);  
    
    textEdit1 = new QTextEdit( "textEdit1" ); 
    textEdit1->setGeometry( QRect( 10, 60, 570, 291 ) );

lineEdit1 = new QLineEdit( "lineEdit1" ); 
    lineEdit1->setGeometry( QRect( 10, 360, 571, 31 ) );

pushButton2 = new QPushButton( "pushButton2" ); 
    pushButton2->setGeometry( QRect( 380, 400, 201, 41 ) );

pushButton1 = new QPushButton(  "pushButton1" ); 
    pushButton1->setGeometry( QRect( 10, 10, 261, 41 ) ); 
    //languageChange(); 
    resize( QSize(600, 480).expandedTo(minimumSizeHint()) );

// signals and slots connections 
    connect( pushButton1, SIGNAL( clicked() ), this, SLOT( newSlot() ) ); 
    connect( pushButton2, SIGNAL( clicked() ), this, SLOT( languageChange() ) );
    //add
    QVBoxLayout *layout=new QVBoxLayout;
    layout->addWidget(textEdit1);
    layout->addWidget(lineEdit1);
    layout->addWidget(pushButton1);
    layout->addWidget(pushButton2);
    
    this->setLayout(layout);
    this->resize(350, 200);

}

/* 
*  Destroys the object and frees any allocated resources 
*/ 
Test::~Test() 

    // no need to delete child widgets, Qt does it all for us 
}

/* 
*  Sets the strings of the subwidgets using the current 
*  language. 
*/ 
void Test::languageChange() 

    this->setWindowTitle("m");
    //printf("new value i is"); 
    pushButton2->setText( tr( "pushButton2" ) ); 
    pushButton1->setText( tr( "pushButton1" ) ); 
}

///

//test.h 
#ifndef TEST_H 
#define TEST_H

#include <qvariant.h> 
#include <qwidget.h>

class QVBoxLayout; 
class QHBoxLayout; 
class QGridLayout; 
class QLineEdit; 
class QPushButton; 
class QTextEdit;

class Test : public QWidget 

    Q_OBJECT

public: 
    Test( QWidget* parent = 0 ); 
    ~Test();

QTextEdit* textEdit1; 
    QLineEdit* lineEdit1; 
    QPushButton* pushButton2; 
    QPushButton* pushButton1;

public slots: 
    virtual void newSlot();

protected:

protected slots: 
    virtual void languageChange(); 
};

#endif // TEST_H

//

main.cpp

#include <qapplication.h> 
#include "test.h"

int main( int argc, char ** argv ) 

    QApplication a( argc, argv ); 
    Test w; 
    w.show(); 
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); 
    return a.exec(); 
}

/

调试运行

gdb *.exe

run step点击按钮就可以看到输出调试信息

Qt线程学习 一个QThread例子相关推荐

  1. Qt 线程基础(QThread、QtConcurrent等)

    昨晚看Qt的Manual,突然发现下一个版本的Qt中(Qt4.7.4.Qt4.8等)增加了一个特赞的介绍多线程的文章 : Thread Basics 注意: 该链接以后会失效,但是 到时候你直接看Qt ...

  2. Qt 学习之路 :Qt 线程相关类

      希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也 ...

  3. iOS学习重要知识点整理02-进程和线程的一个简单解释

    http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 阮一峰的网络日志 » 首页 » 档案 上一篇:熵的社会学意义 下一篇 ...

  4. Qt线程QThread详解

    目录 前言 1.QThread介绍 2.QThread示例一 3.QThread示例二 4.线程同步 前言 在程序中使用线程可以提高程序的性能.并发性.响应性和稳定性,使得程序设计更加灵活和简单.但是 ...

  5. 【Qt】Qt再学习(十一):图形视图框架(Graphics View Framework)的一个小demo

    1.简介 使用的主要类:QGraphicsTextItem.QGraphicsScene.QGraphicsView. QGraphicsTextItem继承自QGraphicsObject,而QGr ...

  6. linux set命令例子,学习一个 Linux 命令:declare/typeset 命令

    原标题:学习一个 Linux 命令:declare/typeset 命令 1 功能简介 declare(别名 typeset)属 Shell 内建命令,用于申明 Shell 变量并设置变量属性,或查看 ...

  7. 从一个小例子看贝叶斯公式的应用(学习简单、基础、入门的例子)

    #从一个小例子看贝叶斯公式的应用 ###应用Bayesian公式考察如下的实例并回答问题. 张某为了解自己患上了X疾病的可能性,去医院作常规血液检查.其结果居然为阳性,他赶忙到网上查询.根据网上的资料 ...

  8. Qt多线程学习:创建多线程

    [为什么要用多线程?] 传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作.如果用户从用户界面中调用一个比较耗时的操作,当该操作正在执行时,用户界面通常会冻结而不再响应.这个问题可以 ...

  9. QT线程使用收集示例

    关于多线程问题: Qt和Boost做跨平台的线程封装,OpenMP主要做并行计算,让不精通多线程的人也能高效地利用CPU的计算能力. 个人倾向于用boost.thread, boost.mpi.   ...

最新文章

  1. Red Hat Linux 安装教程
  2. Struts2 数据标签
  3. 全球及中国血液透析行业发展规模与前景动态调研报告2022版
  4. centos7中每天定时备份mysql数据库
  5. CodeForces - 1288C Two Arrays(组合数学)
  6. 被替换的项目不是替换值长度的倍数_如果要在Excel中计算单元格内指定的字符长度,我推荐这两个公式.........
  7. mysql 学习笔记 11过程控制
  8. E: Some index files failed to download. They have been ignored, or old ones used instead.解决方案
  9. Get!程序员成为高级管理者的三次跃升
  10. 软件测试的支付流程图,软件测试流程图案例.doc
  11. LaTeX下载安装与使用
  12. Python批量 png转ico
  13. ROS2的create_publisher参数详解
  14. 对接熊迈SDK工作记录之实时视频和云录像功能集成
  15. 应用VBS修改注册表大全
  16. 用Python求矩阵的广义逆
  17. 抵御风险网站防攻击,国产浏览器能做的有很多
  18. 程序猿的口味-从C++STL聊到MSYS2-Qt
  19. LINE FRIENDS举办“为布朗熊庆生”系列主题活动
  20. nvidia jetson xavier nx与agx xavier和tx2对比

热门文章

  1. 新能源二手车和燃油二手车如何选择
  2. 命令提示符 简单使用
  3. 百度怎么不收录南通SEO站点??
  4. 计算机对口升学Word试题,计算机对口升学章节复习测试题WORD2003.doc
  5. AutoCAD中的 Application 对象
  6. 性能瓶颈定位XMind
  7. vscode之python框架flask 断点调试的配置(官方推荐的配置,务必注意端口)
  8. python绘制简简单单的五角星
  9. abap Loop循环用法
  10. 为什么成为一名程序员这么难 —— 学Coding的必经之路