Qt线程学习 一个QThread例子
一个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例子相关推荐
- Qt 线程基础(QThread、QtConcurrent等)
昨晚看Qt的Manual,突然发现下一个版本的Qt中(Qt4.7.4.Qt4.8等)增加了一个特赞的介绍多线程的文章 : Thread Basics 注意: 该链接以后会失效,但是 到时候你直接看Qt ...
- Qt 学习之路 :Qt 线程相关类
希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也 ...
- iOS学习重要知识点整理02-进程和线程的一个简单解释
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 阮一峰的网络日志 » 首页 » 档案 上一篇:熵的社会学意义 下一篇 ...
- Qt线程QThread详解
目录 前言 1.QThread介绍 2.QThread示例一 3.QThread示例二 4.线程同步 前言 在程序中使用线程可以提高程序的性能.并发性.响应性和稳定性,使得程序设计更加灵活和简单.但是 ...
- 【Qt】Qt再学习(十一):图形视图框架(Graphics View Framework)的一个小demo
1.简介 使用的主要类:QGraphicsTextItem.QGraphicsScene.QGraphicsView. QGraphicsTextItem继承自QGraphicsObject,而QGr ...
- linux set命令例子,学习一个 Linux 命令:declare/typeset 命令
原标题:学习一个 Linux 命令:declare/typeset 命令 1 功能简介 declare(别名 typeset)属 Shell 内建命令,用于申明 Shell 变量并设置变量属性,或查看 ...
- 从一个小例子看贝叶斯公式的应用(学习简单、基础、入门的例子)
#从一个小例子看贝叶斯公式的应用 ###应用Bayesian公式考察如下的实例并回答问题. 张某为了解自己患上了X疾病的可能性,去医院作常规血液检查.其结果居然为阳性,他赶忙到网上查询.根据网上的资料 ...
- Qt多线程学习:创建多线程
[为什么要用多线程?] 传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作.如果用户从用户界面中调用一个比较耗时的操作,当该操作正在执行时,用户界面通常会冻结而不再响应.这个问题可以 ...
- QT线程使用收集示例
关于多线程问题: Qt和Boost做跨平台的线程封装,OpenMP主要做并行计算,让不精通多线程的人也能高效地利用CPU的计算能力. 个人倾向于用boost.thread, boost.mpi. ...
最新文章
- Red Hat Linux 安装教程
- Struts2 数据标签
- 全球及中国血液透析行业发展规模与前景动态调研报告2022版
- centos7中每天定时备份mysql数据库
- CodeForces - 1288C Two Arrays(组合数学)
- 被替换的项目不是替换值长度的倍数_如果要在Excel中计算单元格内指定的字符长度,我推荐这两个公式.........
- mysql 学习笔记 11过程控制
- E: Some index files failed to download. They have been ignored, or old ones used instead.解决方案
- Get!程序员成为高级管理者的三次跃升
- 软件测试的支付流程图,软件测试流程图案例.doc
- LaTeX下载安装与使用
- Python批量 png转ico
- ROS2的create_publisher参数详解
- 对接熊迈SDK工作记录之实时视频和云录像功能集成
- 应用VBS修改注册表大全
- 用Python求矩阵的广义逆
- 抵御风险网站防攻击,国产浏览器能做的有很多
- 程序猿的口味-从C++STL聊到MSYS2-Qt
- LINE FRIENDS举办“为布朗熊庆生”系列主题活动
- nvidia jetson xavier nx与agx xavier和tx2对比