一、SIGNAL、SLOT

源码路径:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/src/corelib/kernel/qobjectdefs.h

Q_CORE_EXPORT const char *qFlagLocation(const char *method);
#ifndef QT_NO_META_MACROS#ifndef QT_NO_DEBUG     // Debug#define QLOCATION "\0" __FILE__ ":" QT_STRINGIFY(__LINE__)#ifndef QT_NO_KEYWORDS#define METHOD(a) qFlagLocation("0" #a QLOCATION)#endif#define SLOT(a) qFlagLocation("1" #a QLOCATION)#define SIGNAL(a) qFlagLocation("2" #a QLOCATION)#else                   // Release#ifndef QT_NO_KEYWORDS#define METHOD(a) "0" #a#endif#define SLOT(a) "1" #a#define SIGNAL(a) "2" #a#endif#define QMETHOD_CODE  0                        // member type codes#define QSLOT_CODE    1#define QSIGNAL_CODE  2
#endif // QT_NO_META_MACROS

由上述代码可知,关键字 SIGNAL 和 SLOT 实际上是两个宏,其功能均是将信号函数和槽函数字符串化并在前面加上标识符:1或者2,以用来区分槽和信号。

在 Debug 模式下,上述字符串中还会加入文件名和行号,用以在信号槽出错时输出响应的调试信息。

二、signals、slots、emit

源码路径:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/tests/auto/tools/moc/no-keywords.h

#define signals Q_SIGNALS
#define slots Q_SLOTS
#define emit Q_EMIT

源码路径:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/src/corelib/kernel/qobjectdefs.h

#ifndef QT_ANNOTATE_ACCESS_SPECIFIER#define QT_ANNOTATE_ACCESS_SPECIFIER(x)
#endif
...
#define Q_SLOTS QT_ANNOTATE_ACCESS_SPECIFIER(qt_slot)
#define Q_SIGNALS public QT_ANNOTATE_ACCESS_SPECIFIER(qt_signal)
#define Q_EMIT

根据上述代码可知如下:

关键字 实际代码
signals public
slots (空)
emit (空)

(SAW:Game Over!)

Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义相关推荐

  1. Qt signal slot 实现机制

    今天被问到一个问题,如下:Qt的signal slot的实现机制. 现在整理一下: 概述 信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的 ...

  2. Qt 信号槽 signals slots 特点 限定符的区别

    1. 信号槽应用于对象间通信. 2. 信号槽的处理借助于moc(Meta Object Compiler)工具,Q_OBJECT宏通知compiler使用moc工具进行moc扩展. 3. 对象中的信号 ...

  3. Signals Slots(Qt5)

    >Signal-Slot的作用是对象间的通信; Signals-Slots机制是Qt的核心特性, 也可能是Qt和其他大多数框架提供的特性不同的部分; 介绍 >GUI编程中, 当我们改变了一 ...

  4. qt中emit signal slot

    qt中emit signal slot qt中的类库有很多都是从QObject上继承下来的, 信号与反应槽(signals/slot)机制就是用来在QObject类或其子类之间通信的一种方法.作为一种 ...

  5. Qt之信号signals和槽slots详解

    学习到自定义信号和槽的时候经常编译不过去,前边一篇解决了Q_OBJECT编译的问题,这里详细说明了slots和signals. 1.signals前面不可加public.private和protect ...

  6. lesson3 Qt Signal and slots (QSlider and QProgressBar)

    1. 打开设计窗口,拖动一个滑动条和进度条在窗口里面 2.select both,然后选择layout vertically,调整大小 3.选择,edit signals/slogs,然后从滑动条拖到 ...

  7. python PyQt5中文教程☞【第五节】PyQt5事件(Event)和信号(信号槽 Signals slots)

    引用文章:http://code.py40.com/pyqt5/22.html 在这一部分的pyqt5教程中,我们将探讨PyQt5中的事件Event 文章目录 事件 Event 信号槽 Signals ...

  8. Qt5 中的 signal/slot 新语法

    Qt 5 Alpha 已经发布.我们会在后面的文章中看到 Qt 5 的新变化.今天,我们先来看一下 Qt 5 带来的一个最主要的变化:signal/slot 机制的改变. Qt 5 之前的语法 在 Q ...

  9. [转载] Java中的关键字含义以及介绍

    参考链接: C++和Java中static关键字的比较 Java关键字是有特别意义的标识符.用来表示一种数据类型,或者表示程序的结构等. Java关键字不能用作变量名.方法名.类名.包名和参数. 以下 ...

最新文章

  1. (十四)struts2的国际化
  2. css入门教程资料(5)
  3. OData metadata request url的population 逻辑
  4. Android开发之ApiCloud轮播图开发
  5. Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数
  6. java va start_va_start和va_end使用详解
  7. DNS 反向解析出错 Error in named configuration: zone centos.vbird/IN: loaded serial 2011080401
  8. Appium之开发计算器自动化测试脚本Demo
  9. Java - String字符串的部分操作
  10. 最近公共祖先LCA 【专题@AbandonZHANG】
  11. python进阶14文件路径(找不到文件)
  12. 为什么 GitHub 上的开发者比 iOS 上的要更值钱?
  13. 注意程序的[error]log
  14. 【细胞分割】基于matlab GUI分水岭算法细胞分割计数【含Matlab源码 637期】
  15. 黑马程序员最新Python教程——第一阶段(2)
  16. intouch sqlserver_intouch 连接modbus 。转存数据库方法
  17. 2022年春招牛客网最热门的Java岗面试八股文汇总
  18. python+gdal+numpy实现影像uint16转uint8
  19. 如果非要回到古代,我会选择春秋战国
  20. 学习Zynq笔记(1):7020开发平台简介

热门文章

  1. Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由
  2. VMware虚拟机很卡~
  3. Redis的持久化机制与内存管理机制
  4. cordova报错:ANDROID_SDK_ROOT=undefined (recommended setting)
  5. Ansible Playbook核心元素以及组件
  6. Spark常规性能调优三:并行度调节
  7. Linux rpm软件包管理工具常用命令示例
  8. Lua 脚本获取 EVAL EVALSHA 命令的参数
  9. Linux 命令:pwd、touch、ll、wget
  10. Spring MVC架构流程(请求处理流程)