该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

作者:武汉华嵌嵌入式培训中心 技术部

以下和大家分享Linux平台下Qt两种多线程编程的方式:

1、使用Linux平台下的线程函数。以下是给出的代码片段:

//此处为连接信号和槽,通过Qt界面中两按钮来控制两个槽函数

connect(pthred1start, SIGNAL(clicked()), this, SLOT(pthread1start()));

connect(pthred1stop, SIGNAL(clicked()), this, SLOT(pthread1stop()));

/***************************linux平台下的线程****************************/

//此函数为线程处理函数

void *mythread(void *arg)

{

Qt1 *tt = (Qt1 *)arg; //接收qt1的this指针

tt->i = 0;

while(1)

{

(tt->i)++;

qDebug()<i;

//通过接收来的指针操作qt1的界面

tt->LeFirst->setText(QString::number(tt->i));

sleep(1);

}

}

void Qt1::pthread1start()

{

//在槽函数中通过Linux下的线程函数来创建一个线程,并且

//把Qt1中的this指针传到线程函数中

int ret = pthread_create(&ptid, NULL, mythread, (void *)this);

if(ret != 0)

{

printf("wrong\n");

}

}

void Qt1::pthread1stop()

{

//关闭线程

pthread_cancel(ptid);

}

2、使用QT自带的线程类。以下是给出的代码片段:

要使用QT自带的线程类,来实现多线程编程,需要子类化QThread,并且重新实现它的run()函数就可以了。如下所示:

//子类化QThread

class myThread: public QThread

{

Q_OBJECT

public:

myThread(QWidget *parent = 0);

~myThread();

void run();

Qt1 *tt;

int i;

};

/*******************qt自带线程*************************/

//子类化QThread的构造函数的实现,并且对成员变量进行初始化

myThread::myThread(QWidget *parent)

{

i = 0;

tt = (Qt1 *)parent;//保存qt1对象的this指针的值

}

myThread::~myThread()

{

}

/**************qt自带线程start后,会自动执行run函数*********/

//重新实现QThread的run()函数

void myThread::run()

{

while(1)

{

(tt->i)++;

qDebug()<i);

//通过接收的this指针的值,来操作qt1对象的界面

tt->LeFirst->setText(QString::number(tt->i));

sleep(1);

}

}

以上是实现了自己的线程类,然后就如何使用了,使用如下:

在界面的构造函数中有如下代码:

//生成一个自己实现的qt中的线程类对象

thread = new myThread(this);

//通过两个控件来控制线程的开始和结束

connect(qthreadstart, SIGNAL(clicked()), this, SLOT(pthread2start()));

connect(qthreadstop, SIGNAL(clicked()), this, SLOT(pthread2stop()));

void Qt1::pthread2start()

{

thread->start();//启动qt线程

}

void Qt1::pthread2stop()

{

thread->terminate();//停止qt线程

}

注意:

以上都只是给出了线程的使用,但是,在程序中如何使用得视情况而定。

Linux下不使用qt自带sleep,Linux下Qt多线程编程相关推荐

  1. linux qt自带例子无法,在Qt Creator中,错过了一些例子

    在Arch Linux中安装了Qt Creator 2.8 使用pacman安装qt5- *(*作为每个相关包) 存储库中没有示例,因此我使用了AUR,qt5示例中的示例 示例安装在/usr/shar ...

  2. linux 安装rpm qt can't creat,centos 下 Qt Creator 的安装使用

    centos 下 Qt Creator 的安装使用 Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐.Qt Creator 是 ...

  3. Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分)

    #Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分) 在pro文件中添加: #仅在linux 系统下, 硬件平台无关的内容 unix{HEADERS += \ ...

  4. mysql教程qt linux_一步步学Qt,第四天-Linux 下mysql数据库链接

    一步步学Qt,第四天-Linux 下mysql数据库链接 现在在linux系统下面,完成之前的qt-mysql连接工作,此次我新安装了新版的qt,也按照qtassistant对mysqldriver进 ...

  5. Qt+mpv制作windows/linux 下的动态壁纸软件(含源码)

    mpv是啥? mpv之前是mediaplayer,windwos之前好像都有预装这个,都来经过发展,现在是一个对跨平台开发很友好的播放器工具. Qt是啥? 制作桌面应用程序的开发语言及工具,基于C++ ...

  6. 乐鑫Esp32学习之旅27 带你在Windows10平台下用自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  7. 【linux下用C语言编写带图形界面的成绩管理系统附带源代码】

    linux下用C语言编写带图形界面的成绩管理系统附带源代码:(下面内容请配合源代码看) 源代码下载地址:         点击打开链接 或留下联系方式,发给你 一.题目内容 嵌入式Linux数据库编程 ...

  8. Linux下 Qt界面程序嵌入另一个Qt界面程序_Qt应用嵌入外部进程窗口

    项目工程的实现,想要使用多个程序进行实现,在里面存在一定的调用的过程:调查的情况如下 Qt界面程序嵌入另一个Qt界面程序[Linux] Qt界面程序嵌入另一个Qt界面程序[Linux]_ptc321的 ...

  9. linux格式化gat分区,Linux 下使用udev永久绑定带库设备方法

    Linux 下使用udev永久绑定带库设备方法 在Linux 系统下配置带库设备,传统的方法是当安装完lin_tape驱动后会在/dev/路径下生成IBMtape,IBMchanger 这样的驱动设备 ...

最新文章

  1. 企业怎样管理员工才会更有效?
  2. html svg波浪,svg+css3做一个动感的波浪效果实现
  3. autorelease使用注意事项
  4. 【Python基础】Python爬虫的两套解析方法和四种信息提取方式
  5. ELK错误1_Kafka-Logstash-Elasticsearch过程,Elasticsearch报grokparsefailure错误
  6. linux pmap was java,jvm 《九》pmap linux 命令介绍 及使用
  7. SAP License:FI权限需要控制利润中心
  8. 用好这个数据分析工具,BI平台建设少费一半力
  9. 飞机大战 雷霆战机 打字小游戏 java小游戏设计(提供源代码下载)
  10. 如何批量把照片设置统一尺寸?
  11. 【Caffe安装】caffe安装系列——史上最详细的安装步骤
  12. 浅谈数字音频处理的新技术
  13. 浏览器突然无法打开微信链接解决办法
  14. docker修改nginx容器主页内容信息【还能这样操作?】
  15. 服务器许可证书,lic-auth: 基于Spring的项目中使用 `TrueLicense `生成和验证`License证书`(服务器许可)的示例代码...
  16. python 求3位数的水仙花数_python 求3到8位数的水仙花数Pycharm实现
  17. 企业办理CMMI3级认证,需要做哪些工作?
  18. 合数(数论基础概念)
  19. 涉密学位论文不得在联网的计算机上撰写,华南理工大学涉密学位论文管理暂行规定.doc...
  20. 三轴加速度计测量值生成算法matlab,[算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本...

热门文章

  1. 计算机的医学应用,计算机在医学中的应用
  2. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加均值、标准偏差)实战
  3. R语言ggplot2可视化基本散点图(设置X轴使用对数坐标)、并把成对的数据点用线条(line)连接起来、自定义配置线条颜色(Connecting Paired Points with lines)
  4. R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count)、分组均值(mean)、箱体填充色自定义、数据标签色彩自定义
  5. R语言ggplot2可视化将图像标题(title)居中显示实战
  6. R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数
  7. R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战
  8. R语言对数正态分布分布函数Log Normal Distribution(dlnorm, plnorm, qlnorm rlnorm)实战
  9. R假设检验之Breusch-Pagan检验(Breusch-Pagan Test)
  10. 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?