Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义
一、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 关键字含义相关推荐
- Qt signal slot 实现机制
今天被问到一个问题,如下:Qt的signal slot的实现机制. 现在整理一下: 概述 信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的 ...
- Qt 信号槽 signals slots 特点 限定符的区别
1. 信号槽应用于对象间通信. 2. 信号槽的处理借助于moc(Meta Object Compiler)工具,Q_OBJECT宏通知compiler使用moc工具进行moc扩展. 3. 对象中的信号 ...
- Signals Slots(Qt5)
>Signal-Slot的作用是对象间的通信; Signals-Slots机制是Qt的核心特性, 也可能是Qt和其他大多数框架提供的特性不同的部分; 介绍 >GUI编程中, 当我们改变了一 ...
- qt中emit signal slot
qt中emit signal slot qt中的类库有很多都是从QObject上继承下来的, 信号与反应槽(signals/slot)机制就是用来在QObject类或其子类之间通信的一种方法.作为一种 ...
- Qt之信号signals和槽slots详解
学习到自定义信号和槽的时候经常编译不过去,前边一篇解决了Q_OBJECT编译的问题,这里详细说明了slots和signals. 1.signals前面不可加public.private和protect ...
- lesson3 Qt Signal and slots (QSlider and QProgressBar)
1. 打开设计窗口,拖动一个滑动条和进度条在窗口里面 2.select both,然后选择layout vertically,调整大小 3.选择,edit signals/slogs,然后从滑动条拖到 ...
- python PyQt5中文教程☞【第五节】PyQt5事件(Event)和信号(信号槽 Signals slots)
引用文章:http://code.py40.com/pyqt5/22.html 在这一部分的pyqt5教程中,我们将探讨PyQt5中的事件Event 文章目录 事件 Event 信号槽 Signals ...
- Qt5 中的 signal/slot 新语法
Qt 5 Alpha 已经发布.我们会在后面的文章中看到 Qt 5 的新变化.今天,我们先来看一下 Qt 5 带来的一个最主要的变化:signal/slot 机制的改变. Qt 5 之前的语法 在 Q ...
- [转载] Java中的关键字含义以及介绍
参考链接: C++和Java中static关键字的比较 Java关键字是有特别意义的标识符.用来表示一种数据类型,或者表示程序的结构等. Java关键字不能用作变量名.方法名.类名.包名和参数. 以下 ...
最新文章
- (十四)struts2的国际化
- css入门教程资料(5)
- OData metadata request url的population 逻辑
- Android开发之ApiCloud轮播图开发
- Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数
- java va start_va_start和va_end使用详解
- DNS 反向解析出错 Error in named configuration: zone centos.vbird/IN: loaded serial 2011080401
- Appium之开发计算器自动化测试脚本Demo
- Java - String字符串的部分操作
- 最近公共祖先LCA 【专题@AbandonZHANG】
- python进阶14文件路径(找不到文件)
- 为什么 GitHub 上的开发者比 iOS 上的要更值钱?
- 注意程序的[error]log
- 【细胞分割】基于matlab GUI分水岭算法细胞分割计数【含Matlab源码 637期】
- 黑马程序员最新Python教程——第一阶段(2)
- intouch sqlserver_intouch 连接modbus 。转存数据库方法
- 2022年春招牛客网最热门的Java岗面试八股文汇总
- python+gdal+numpy实现影像uint16转uint8
- 如果非要回到古代,我会选择春秋战国
- 学习Zynq笔记(1):7020开发平台简介
热门文章
- Android IOS WebRTC 音视频开发总结(七九)-- WebRTC选择H.264的四大理由
- VMware虚拟机很卡~
- Redis的持久化机制与内存管理机制
- cordova报错:ANDROID_SDK_ROOT=undefined (recommended setting)
- Ansible Playbook核心元素以及组件
- Spark常规性能调优三:并行度调节
- Linux rpm软件包管理工具常用命令示例
- Lua 脚本获取 EVAL EVALSHA 命令的参数
- Linux 命令:pwd、touch、ll、wget
- Spring MVC架构流程(请求处理流程)