在Qt的开发过程中,信号带参数是很常见的,在使用带参数的信号槽时,有以下几点需要注意。

  • 当信号和槽函数的参数数量相同时,它们的参数类型要完全一致。

信号和槽函数的声明:

signals:
void iSignal(int b);
void strSignal(QString str);
public slots:
void iSlots(int b);
void strSlots(QString str);

信号和槽函数的绑定:

    connect(this,SIGNAL(iSignal(int)),
this,SLOT(iSlots(int))); connect(this,SIGNAL(strSignal(QString)),
this,SLOT(strSlots(QString)));

发射信号:

    emit iSignal(5);
emit strSignal("hello word");

槽函数的实现:

void MainWindow::iSlots(int b)
{
qDebug() << "b = " << b;
} void MainWindow::strSlots(QString str)
{
qDebug() << str;
}
  • 当信号的参数与槽函数的参数数量不同时,只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略。

信号:

    void iSignal(int b,int a);

响应信号的槽函数:

void MainWindow::iSlots(int b)
{
qDebug() << "b = " << b;
}
  • 在不进行参数传递时,信号槽绑定也是要求信号的参数数量大于等于槽函数的参数数量,这种情况一般是一个带参数的信号去绑定一个无参数的槽函数。

信号:

    void iSignal(int b,int a);

响应信号的槽函数:

void iSlots();

信号和槽函数的绑定:

    connect(this,SIGNAL(iSignal(int,int)),
this,SLOT(iSlots()));

Qt带参数的信号和槽的更多相关文章

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

                                    信号槽如何传递参数(或带参数的信号槽) 利用Qt进行程序开发时,有时需要信号槽来完成参数传递.带参数的信号槽在使用时,有几点需要注意的地 ...

  2. 第七章 探秘Qt的核心机制-信号与槽

    第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...

  3. Qt Quick 事件处理之信号与槽(foruok的博客)

    前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经可以完成简 ...

  4. Qt Quick 事件处理之信号与槽

    前面两篇文章<QML 语言基础>和<Qt Quick 简单教程>中我们介绍了 QML 语言的基本的语法和 Qt Quick 的常见元素,亲们,通过这两篇文章,您应该已经能够完毕 ...

  5. 2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)

    本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 消息处理(信号与槽) 窗口组件(QWidget) 介绍 Qt以组件对象的方式构建图形用户界面 Qt中没有父组件的顶级组件 ...

  6. Qt对象模型之一:信号和槽

    一.信号和槽机制概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种发出是没有目 ...

  7. PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?

    老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...

  8. Qt 编程指南 3 信号和槽沟通

    https://qtguide.ustclug.org/ 1 信号和槽 所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座.怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键, ...

  9. QT(4)信号与槽

    mainWidget.h #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QPushBu ...

随机推荐

  1. Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)

    private void SMT(HttpContext context) { string SqlConnection82 = System.Configuration.ConfigurationM ...

  2. GoldenGate—AUTORESTART配置

    AUTORESTART Valid For Manager Description Use the AUTORESTART parameter to start one or more Extract ...

  3. 面试题:String类通用构造,拷贝构造,析构,赋值函数实现

    已知 String 类定义如下: class String { public: //通用构造函数 String(const char* str = NULL); //拷贝构造函数 String(con ...

  4. 六、IDEA-SpringBoot项目设置热部署

    啥是热部署!???(不要去查了,,同学) 根据上面的提示,我们已经完成了Spring Boot项目的创建和运行,但是有一个问题就是,每次修改代码之后都需要重新启动调试,代码才能生效,比较麻烦,那有没有 ...

  5. Flink集群环境搭建

    环境准备 master:171:slave:171,172:flink版本:1.3.0 下载地址:http://archive.apache.org/dist/flink/flink-1.3.0/ 集 ...

  6. pycharm运行正确但是不出结果

    描述:之前用的好好的,突然有一天用pycharm运行程序,明明结果正确, 打印不出来结果,看下图 解决: 查看File Transfer有好多错误,意思是没有连接上服务器 [2018/12/8 21: ...

  7. 一种局部二值化算法:Sauvola算法

    之前接触过全局二值化(OTSU算法),还有OPENCV提供的自适应二值化,最近又了解到一种新的局部二值化算法,Sauvola算法. 转载自:http://www.dididongdong.com/ar ...

  8. windows 下使用Linux子系统

     在 Windows 上进行 web 开发,比较普遍的方案是使用 phpstudy 或者别的一些集成环境软件进行环境搭建,写好代码后将代码上传至版本管理工具 git/svn,再将代码同步到 Linux ...

  9. ftp搭建mysql服务器

    一.将mysql放入FTP服务器中1.安装FTP    yum install -y vsftpd2.准备ftp主目录    mkdir /var/ftp/mysql57/3.官网下载yum仓库的包. ...

  10. 避免浏览器缓存JS

    有时候更改了JS代码,但是浏览器内容不变,这样<script src="Scripts/myjs/Master.js?v"></script>引入JS就可以 ...