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

智能推荐

openssh aix_获取最新版本的OpenSSH for AIX-程序员宅基地

文章浏览阅读1.5k次。什么是开放安全壳? Open Secure Shell(OpenSSH)是网络连接工具SSH协议套件的开源版本。 这些工具提供经过身份验证和加密的外壳程序功能。 Shell是命令语言解释器,可从命令行字符串,stdin或文件中读取输入。 为什么要使用OpenSSH? 在不安全的公共网络(如Internet)上运行时,可以使用SSH命令套件而不是不安全的命令telnet,f​​tp和r命令。..._aix最新版ssh

不会真有人觉得聊天机器人难吧-程序员宅基地

文章浏览阅读483次,点赞3次,收藏3次。本系列会基于自己实现的类Pytorch工具实现一个Seq2Seq 带Attention机制的聊天机器人,在本系列文章中,大家会了解到实现聊天机器人的所有知识,以及如何实现一个类似PyTorch一样的深度学习框架。欢迎关注哦。

Java学习路线_自动机理论、语言和计算导论 site:csdn.net-程序员宅基地

文章浏览阅读923次。前提条件: 需要有高中毕业的水准 (或者同等学历的也行,比如中专,我本人就是读中专然后再读自考大专的)。学习方式: 完全可以自学,最好自己有电脑。偏重方向: 偏重软件,而不是计算机硬件。英语要求: 掌握3000个左右的常用单词,能读就差不多了, 如果不想看英文可以找中文翻译版的,我个人偏向看中文,对于非常好的书我通常中英文都买来看。以下列出的书是按照循序渐进的方式介绍的, _自动机理论、语言和计算导论 site:csdn.net

一个不错的GIT入门教程_刚培训完,git-程序员宅基地

文章浏览阅读1k次。今天公司培训了GIT,然后下班回家搜了一下,从新复习一下GIT加深印象。这篇文章对于刚刚做项目的新手们有很大帮助。让你知道什么时候commit,什么时候用 -pull 什么时候push 和一些注意事项! 1. 概述 对于软件版本管理工具,酷讯决定摒弃CVS而转向Git了。 为什么要选择Git? 你真正学会使用Git时, 你就会觉得这个问题的回答是非常自然的。然_刚培训完,git

WAF绕过-信息收集之反爬虫延时代理池 46_阿里waf 反爬-程序员宅基地

文章浏览阅读518次。老师用的阿里云的服务器,装了宝塔和安全狗,演示案例。_阿里waf 反爬

PlantCom:基于内参的宿主相关丰度定量分析揭示植物根系微生物组的微生物总量变化-程序员宅基地

文章浏览阅读2.5k次。文章目录基于内参的宿主相关丰度定量分析揭示植物根系微生物组的微生物总量变化摘要背景介绍图1.植物根部微生物组定量丰度分析的优势和实验步骤结果spike-in内参质粒和HA-QAP方法的原理内参质粒(spike-in)适用于定量分析微生物组谱图2. 在细菌模拟实验中HA-QAP比传统的基于相对丰度的分析更准确在人工混菌实验中检测微生物总量以评估方法的设计和合理性HA-QAP在模拟实验中检测根微生物组...

随便推点

github -ubuntu 首次git clone 代码错误Please make sure you have the correct access rights and the repositor-程序员宅基地

文章浏览阅读1.2k次。首次从github git clone 代码到ubuntu本机中, 若出现以下错误:joaquin@vmachine:/home$ sudo git clone [email protected]:jasgooddy/distributed-saving-.git[sudo] password for joaquin: Cloning into 'distributed-sa

【IntelliJ IDEA工具】spring boot使用JPA自动生成实体类(数据库表逆向工程自动生成带注释的实体类)_springdatajpa逆向生成实体类-程序员宅基地

文章浏览阅读1.2k次。1、maven依赖: <!-- JPA,用于自动生成表结构 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> &_springdatajpa逆向生成实体类

TMDS_tmds解码程序-程序员宅基地

文章浏览阅读1.4k次。module vdc_encode( rst, clk, de, d, c0, c1, q_out); input rst; input clk; input de, c0, c1; input[7:0] d; output reg[9:0] q_out; reg[9:0] q_m;..._tmds解码程序

Windows上彻底卸载软件及清理残留数据的详细步骤_windows可以彻底卸载软件的-程序员宅基地

文章浏览阅读2.7w次,点赞14次,收藏87次。在Windows操作系统上安装和卸载软件是常见的操作。然而,仅仅通过常规的卸载过程并不能完全清除软件的所有残留数据。为了彻底卸载软件并清理相关的残留数据,我们需要采取额外的步骤。本文将详细介绍在Windows上彻底卸载软件以及清理残留数据的步骤。_windows可以彻底卸载软件的

微信小程序实现授权登录及退出_java 小程序退出登录-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏34次。1.登录获取用户昵称,头像2.创建云函数右击新建文件夹cloud在根目录project.config.json中添加:右击文件夹cloud选择当前环境右击文件夹cloud新建Node.js云函数,命名login在新建文件夹login的index.js文件中:右击login文件夹选择上传并部署:云端安装依赖(不上传node_modules),显示上传成功提示。3.使用云函数获取openid根目录app.js中获取openid:4.为防止一个用户在数据库中出现多条登录记录,需要将o_java 小程序退出登录

3.RabbitMQ UI管理界面使用(用户、虚拟主机)_rabbitmq management ui-程序员宅基地

文章浏览阅读2.1k次。当安装了RabbitMQ之后相当于安装了Mysql数据库,那么在使用mysql的时候需要创建用户,这里的用户跟Mysql的用户可以同等理解用户角色:Admin(管理员)、Monitoring (监控者)、Policymaker(决策者)、Management(管理者)、Impersonator(模拟者)、None(没有)用户角色描述超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作监控者(monitoring)_rabbitmq management ui

推荐文章

热门文章

相关标签