槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用。connect()语句的原型类似于:
connect(sender, SIGNAL(signal), receiver, SLOT(slot));

  sender 和 receiver 都是 QObject 类型的,singal 和 slot 都是没有参数名称的函数签名。SINGAL()和 SLOT()宏用于把参数转换成字符串。

  信号槽还有更多可能的用法,如下所示。

  一个信号可以和多个槽相连:
  connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)));
  connect(slider, SIGNAL(valueChanged(int)),this, SLOT(updateStatusBarIndicator(int)));

注意,如果是这种情况,这些槽会一个接一个的被调用,但是它们的调用顺序是不确定的。

  多个信号可以连接到一个槽:
  connect(lcd, SIGNAL(overflow()),this, SLOT(handleMathError()));
  connect(calculator, SIGNAL(divisionByZero()),this, SLOT(handleMathError()));

这是说,只要任意一个信号发出,这个槽就会被调用。

  槽可以被取消链接:

  disconnect(lcd, SIGNAL(overflow()),this, SLOT(handleMathError()));

为了正确的连接信号槽,信号和槽的参数个数、类型以及出现的顺序都必须相同,
例如:
connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this, SLOT(processReply(int, const QString &)));
这里有一种例外情况,如果信号的参数多于槽的参数,那么这个参数之后的那些参数都会被忽略掉,例如:
connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this, SLOT(checkErrorCode(int)));
这里,const QString &这个参数就会被槽忽略掉。

QT学习之路--深入了解信号槽的更多相关文章

  1. 【QT学习笔记】二、信号槽和自定义信号槽

    1. 信号槽 int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Qui ...

  2. Qt 学习之路 2(16):深入 Qt5 信号槽新语法

    Qt 学习之路 2(16):深入 Qt5 信号槽新语法  豆子  2012年9月19日  Qt 学习之路 2  53条评论 在前面的章节(信号槽和自定义信号槽)中,我们详细介绍了有关 Qt 5 的信号 ...

  3. Qt 学习之路 2(5):自定义信号槽

    Home / Qt 学习之路 2 / Qt 学习之路 2(5):自定义信号槽 Qt 学习之路 2(5):自定义信号槽  豆子  2012年8月24日  Qt 学习之路 2  131条评论 上一节我们详 ...

  4. Qt 学习之路 2(4):信号槽

    Home / Qt 学习之路 2 / Qt 学习之路 2(4):信号槽 Qt 学习之路 2(4):信号槽  豆子  2012年8月23日  Qt 学习之路 2  110条评论 信号槽是 Qt 框架引以 ...

  5. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  6. Qt学习之路

      Qt学习之路_14(简易音乐播放器)   Qt学习之路_13(简易俄罗斯方块)   Qt学习之路_12(简易数据管理系统)   Qt学习之路_11(简易多文档编辑器)   Qt学习之路_10(Qt ...

  7. Qt 学习之路 2(74):线程和 QObject

    Home / Qt 学习之路 2 / Qt 学习之路 2(74):线程和 QObject Qt 学习之路 2(74):线程和 QObject  豆子  2013年12月3日  Qt 学习之路 2  2 ...

  8. Qt 学习之路 2(73):Qt 线程相关类

    Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类  豆子  2013年11月26日  Qt 学习之路 2  7条评论 希 ...

  9. Qt 学习之路 2(72):线程和事件循环

    Qt 学习之路 2(72):线程和事件循环 <理解不清晰,不透彻>  --  有需求的话还需要进行专题学习  豆子  2013年11月24日  Qt 学习之路 2  34条评论 前面一章我 ...

随机推荐

  1. 存储过程实现登录(.net)

    工作中,可能有时为了安全等的考虑,需要更多 的运用存储过程.有的公司甚至在登录一栏也会提出这样的要求,那么怎么用存储过程实现登录呢.好处就不用言名了,一个速度,一个就是安全系统更高. 下面贴上:1.存 ...

  2. bzoj 2763: [JLOI2011]飞行路线

    #include<cstdio> #include<cstring> #include<iostream> #include<queue> #defin ...

  3. centos55_oracle11gr2_install

    第一个阶段:安装centos55 a:安装centos5.5   用图形界面安装  硬盘 16G 注意:用图形界面安装.. 第二个阶段:配置1:检查内存情况# grep MemTotal /proc/ ...

  4. Oracle创建,删除用户与表空间

    1.创建表空间与用户 a:创建数据表空间 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...

  5. Android M新特性之APP Link

    The Android M Developer Preview introduces support for App Links, which improves upon existing link ...

  6. shell多行注释

    :<<BLOCK ....被注释的多行内容 BLOCK :<< 'BLOCK ....被注释的多行内容 BLOCK'

  7. BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP

    最近感到KMP不会啊,以前都是背板的现在要理解了. #include <iostream> #include <cstring> #include <cstdio> ...

  8. PHP 调试

    $log_path = '/data0/www/html/hejungw/static/log/uploadlog/'; $log = $log_path . date('Y-m-d') . '.lo ...

  9. Codeforces Round #378 (Div. 2) A B C D 施工中

    A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input ...

  10. Web Storage的方法

    1.分为两种:localStorage与sessionStorage.2.存储形式:key-value的形式.sessionStorage 1.session定义:session指用户在浏览某个网站时 ...