QT不同线程间signal-slot机制的值传递_qt connect 两个线程,signal 带两个int参数,slots函数带两个int参数-程序员宅基地

技术标签: QT  线程  signal-slot  软件开发  

QT不同线程间signal-slot机制的值传递

signal-slot机制是QT核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性:

1loosely coupled

senderreceiver互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal

2type-safe

connect连接时,遵守严格的参数约定,slot参数必须与signal参数保持一致,slot参数数量可以少于signal

现在code看看究竟。测试方法:

创建两个dialog窗口:dialogsubdialogsubdialog窗口通过dialog窗口的一个QPushbutton调出。

https://img-blog.csdn.net/20131227183019812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVzdHlhbmdqdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

subdialog窗口上的一个QPushbutton emit 一个信号:

signal_subdialog(num1, num2);

提前赋值:

void subdialog::slot1()

{

    num1 = 1;

    num2 = 2;

    emit signal_subdialog(num1, num2);

    qDebug("signal emit");

}

主窗口设置一个QLineEdite控件来接收显示从信号接收的数据。

connect(dialog1, SIGNAL(signal_subdialog(int, int)), this, SLOT(slot_receive(int, int)));

https://img-blog.csdn.net/20131227183059937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVzdHlhbmdqdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

测试顺利通过。

总结:

  1. signal senderclass里声明,没有定义,声明时带上形参,只是形参而已,起到类型声明的作用。
  2. slotreceiverclass里声明并定义,一般为public slots,也要带上形参,个数不超过signal形参个数。
  3. sender class 声明为receiver class的数据成员(一般为private)。
  4. receiver class的对象中 connect,保持signalslot的参数类型一致。只写类型,不带形参名。
  5. slot定义时形参就是从signal接收来的数据。

void Dialog::slot_receive(int tmp1, int tmp2)

{

    shownumber1 = tmp1;

    shownumber2 = tmp2;

   qDebug()<<shownumber1<<shownumber2;

   line->setText(QString("receive number is %1 and %2").arg(shownumber1).arg(shownumber2));

}

完整代码:

http://download.csdn.net/detail/hustyangju/6778685

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liubing8609/article/details/90344296

智能推荐

buck dcm占空比计算_一看就会!这位牛人把MOS开关损耗计算写神了-程序员宅基地

文章浏览阅读643次。电源工程师们都知道开关MOS在整个电源系统里面的损耗占比是不小的,我们谈及最多的就是开通损耗和关断损耗,由于这两个损耗不像导通损耗或驱动损耗一样那么直观,所以有部分人对于它计算还有些迷茫。今天我们就来详细分析计算一下开关损耗,并论述实际状态下功率MOSFET的开通过程和自然零电压关断的过程,从而使电子工程师知道哪个参数起主导作用并更加深入理解MOSFET。MOSFET开关损耗1、开通过程..._buck电路电感和开关管损耗占比

cocos2dx——裁剪节点ClippingNode-程序员宅基地

文章浏览阅读77次。【唠叨】 学习cocos2dx 3.2确实比较吃力,因为网上关于最新版的v3.2的资料十分稀少,或者是讲解的确实不是很详细。大部分人都是根据官方文档照样画瓢,而对于有些比较抽象的概念及函数都是照着官方文档来讲解的。这样的结果,导致有些东西令我确实非常费解。没有办法,只好自己来总结cocos2dx3.2,然后将个人的学习感悟分享给大家。PS:当然有些大牛写的文章还是..._clippingnode 性能

Viper炫彩蛇的下载与安装(MSF图形化界面)_简易极速安装版-程序员宅基地

文章浏览阅读647次,点赞2次,收藏2次。1.更新apt-get2.下载docker.ioY。_炫彩蛇

CVPR2021|| Coordinate Attention注意力机制_位置注意力机制-程序员宅基地

文章浏览阅读2.4w次,点赞63次,收藏418次。Paper:https://arxiv.org/pdf/2103.02907.pdfGitHub:https://github.com/Andrew-Qibin/CoordAttention轻量,优秀,好用!讲之前我们先回顾一下以前的SE与CBAMSESE比较简单,看一下结构图差不多就能理解了,如果有些实现不太懂的,可以借鉴一下CBAM的。但SE只考虑内部通道信息而忽略了位置信息的重要性,而视觉中目标的空间结构是很重要的。CBAM稍微介绍一下CBAM,如图b所示,CBAM包含空间注意力和通_位置注意力机制

eslint搭配prettier使用步骤_plugin:prettier/recommended-程序员宅基地

文章浏览阅读1.2k次。这里的执行逻辑顺序是:eslint会首先读extends的规则,这个时候遇到了最后配置的plugin:prettier/recommended,而这个插件又会先读本地配置的.prettierrc文件再读取prettier自己内部设置的配置,最后读.eslintrc.json的rules配置。2、其次配置.eslintrc.json文件,extends: [“plugin:prettier/recommended”],如果有其他扩展,则"plugin:prettier/recommended"放在最后。_plugin:prettier/recommended

kettle 共享数据库连接时带汉字引发的错误-程序员宅基地

文章浏览阅读548次。处理方式:在目录: C:\Users\Administrator\.kettle 里 找到:shared.xml 把该文件的编码方式改为UTF-8,重启kettle就没问题了

随便推点

HDOJ 2544 BellmanFord实现-程序员宅基地

文章浏览阅读69次。1 #include <cstdio> 2 3 struct road{ 4 int head; 5 int tail; 6 int value; 7 }; 8 9 #define Infinity 23333333310 11 int main(){12 int n, m;13 ...

大数据Hadoop复习笔记_燕山大学大数据期末复习笔记-程序员宅基地

文章浏览阅读3.9k次,点赞14次,收藏39次。题型与分值选择题10道*2分=20分填空题5道*2分=10分判断题5道*1分=5分简答题2道*10分=20分方案设计题1道*15分=15分(无唯一标准答案,可用中文写清楚每个关键步骤和重要技术点,也可直接写代码,或者中文和代码混合说明)注意:①写清方案实行的步骤②每个步骤的重要技术点,比如用的哪个类来实现程序设计题6段*5分=30分(从挖行改成挖段)内容复习hive的JSON和多字节分隔符的解析步骤和关键技术点复习hive窗口函数的使用方法和含义集群与分布式分布式_燕山大学大数据期末复习笔记

java读取TXT文件类_readtxt.readfile java-程序员宅基地

文章浏览阅读431次。Java读取txt文件内容。可以作如下理解:首先获得一个文件句柄。File file = new File();file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。通过这条线路读取甲方的信息:new FileInputStream(file)目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西既然你使用了FileInputStream(_readtxt.readfile java

天才ACM-程序员宅基地

文章浏览阅读446次,点赞11次,收藏7次。给定一个整数 M,对于任意一个整数集合 S,定义“校验值”如下:从集合 S 中取出 M 对数(即 2×M 个数,不能重复使用集合中的数,如果 S 中的整数不够 M 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值就称为集合 S 的“校验值”。现在给定一个长度为 N 的数列 A 以及一个整数 T。我们要把 A 分成若干段,使得每一段的“校验值”都不超过 T。求最少需要分成几段。_天才acm

仅用5个线程,让Idea全系列Ide能看电视、直播、电影、听广播、音乐、美女图_bg-boom-程序员宅基地

文章浏览阅读7.6k次,点赞21次,收藏24次。今天要分享的技术方案是我在写bg-boom这款插件当中一小块的代码实现方案,先从需求说起吧,其模块整体的需求是丰富idea的背景功能,让背景支持电影、视频、直播、TV、广播、音乐、美女图等功能。_bg-boom

联想适合计算机专业的游戏本,全球最佳游戏笔记本电脑Top 10-程序员宅基地

文章浏览阅读751次。如果你告诉你的朋友你想买一台电脑,他们肯定会建议你买一台台式电脑。因为在相同的预算下,台式电脑可以比笔记本电脑带来更强大的性能。然而,在很多情况下,台式电脑的不可移动性会给游戏玩家带来很多麻烦,这并不像笔记本电脑那样方便。Origin EON15-X:桌面级的CPU造就一个无与伦比的游戏笔记本电脑处理器:4GHz英特尔酷睿i7-4790K;显卡:英伟达GeForce GTX 980 M (..._联想买什么电脑好,能玩游戏,办公软件