Qt 信号槽如何传递参数(或带参数的信号槽)

                                信号槽如何传递参数(或带参数的信号槽)

利用Qt进行程序开发时,有时需要信号槽来完成参数传递。带参数的信号槽在使用时,有几点需要注意的地方,下面结合实例进行介绍。

第一点:当信号与槽函数的参数数量相同时,它们参数类型要完全一致。

signals:
    void emitdata(int);
private slots:
    void getdata(int);   // 具体实现   qDebug() << "int :   "  << a <<  agr << endl;
然后进行链接    connect(this,SIGNAL(emitdata(int)),this,SLOT(getdata(int)));   发送信号:   emit emitdata(5) ;    

我们 将会收到   5  这个数字;;

第二点:当信号的参数与槽函数的参数数量不同时,。   1、 当我们的槽参数数量多于信号数量时 将会出现  QObject::connect: Incompatible sender/receiver arguments 这个错误;

   2、 只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略 ;      我们只能接受第一个参数;
signals:
    void emitdata(int,int);
private slots:
    void getdata(int);   // 具体实现   qDebug() << "int :   "  << a <<  agr << endl;
然后进行链接    connect(this,SIGNAL(emitdata(int)),this,SLOT(getdata(int)));   发送信号:   emit emitdata(5,10) ;    

我们 只能会收到   5  这个数字;;
				
时间: 2024-11-03 14:27:07

Qt 信号槽如何传递参数(或带参数的信号槽)的相关文章

JS参数使用带参数的方法

大家都知道,在JS之中,一个变量的生命周期不是以大括号为界限的,所以即使是使用在循环或判断中的变量,外部也可以使用.可如果我们在循环或变量中使用了方法,而且这个方法使用了循环中的变量,那么后面的代码是可以修改这个变量的值的,而不是,将值的内容完全写死在了循环里面的方法中.那么解决这个问题的一种方法就是,将方法写出来,接收一个参数就可以了. 可是,在JS中传递的参数如果是方法,那么后面不能加上小括号,如果加上的话,就认为是调用了这个方法,会立即执行,这样一来,就更别说是传递参数了,那么如果解决这个

Qt带参数的信号,和指针函数和函数指针

一:Qt带参数的信号 main.cpp #include "widget.h" #include "slot.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); //查找QApplication()的相关资料 Widget w; w.show(); return a.exec(); } widget.cpp #include &

JS中setInterval、setTimeout不能传递带参数的函数的解决方案

在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法 在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决. 一.采用字符串形式:——(缺陷)参数不能被周期性改变 setInterval("foo(id)",1000); 二.匿名函数包装 (推荐) window.setInterval(

iOS NSNotification传递带参数的通知

原文链接: iOS NSNotification传递带参数的通知 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS开发者公会-议事区   QQ群号:413102158

Java带参数的线程类ParameterizedThread——即如何给Thread传递参数

在Java中似乎没有提供带运行参数的线程实现类,在第三方类库中也没有找到.网上有大量的文章在讨论这个问题,但都没有提供很好的代码封装解决方案,这令我很吃惊.如果读者知道有官方或者第三方的实现方式,欢迎留言说明.本文最后给出了一种实现带运行参数的线程实现类. 在C#的基础类库中早就提供了相关的解决方案,如下是C#提供的带参数的子线程创建方法: Thread th = new Thread((param) => { Console.WriteLine(param); }); th.Start(i);

JS中setInterval、setTimeout不能传递带参数的函数的解决方法

setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function test(){} setTimeout(test,1000) //带参数的函数,用匿名函数包装(可以实现动态传参) function onemodelanima(o, tobestatus, time, easing, origin){ if(easing == null){ easing = "&q

解决 js setTimeout 传递带参数的函数无效果

最近 js  用到 setTimeout 递归调用 刷新进度  setTimeout ("getProgress(name,type)", 3000) ; 发现getProgress函数 带上参数 就失效了,不带参数可以调用又达不到效果 解决办法:匿名函数包装  改成如下即可  setTimeout(function(){getProgress(name, type)}, 3000);   原文地址:https://www.cnblogs.com/ysx215/p/9057463.ht

微信二维码带参数的二维码(转)

官方文档地址:https://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html 原文地址:http://jingyan.baidu.com/article/fdbd4277cfd0c6b89f3f485f.html 注意事项 我知道你们是没有心情看注意事项的,但是很重要,所以我先摆上来. 用户扫描带参数的二维码,可能推送以下两种事件: 1.如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给

不带参数的宏定义与带参数的宏定义

宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义.文件包含.条件编译 1.不带参数的宏定义: 宏定义又称为宏代换.宏替换,简称“宏”. 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”. 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串. 掌握"宏"概念的关键是“换”.一切以换为前提.做任何事情之前先要换,准确理解之前就要“换”. 即在对相关命令或语句的含义和功能作具体分析之前就要换: 例: #define PI 3.1415