Qt之connect
Qt4之connect
基本用法
connect(ui->toolButton, SIGNAL(clicked()), this, SLOT(OnClickButton()));
disconnect(ui->toolButton, SIGNAL(clicked()), this, SLOT(OnClickButton()));
返回bool以表示信号槽连接/断开是否成功
Q_CORE_EXPORT const char *qFlagLocation(const char *method);
#define SLOT(a) qFlagLocation("1"#a QLOCATION)
#define SIGNAL(a) qFlagLocation("2"#a QLOCATION)
SIGNAL和SLOT实际上是两个宏定义,将函数名及其参数列表转换成一个字符串,随后moc会扫面全部文件,将所有的信号和槽提取出来做成一个映射表。
设置回调函数
利用SIGNAL和SLOT两个宏定义转换字符串的功能,可以利用之设置回调函数
void SetCallback(const char* callback){
connect(this, SIGNAL(TestSignal()), this, callback);
}
SetCallback(SLOT(TargetFunction)); //调用
Qt5之connect
- Qt5兼容旧版的信号槽连接机制;
- 新增新语法连接信号槽,使用函数指针;
示例:
QMetaObject::Connection cobject = connect(ui->toolButton, &QToolButton::clicked, this, &Widget::OnClickButton);
disconnect(connect_object);
connect(ui->toolButton, &QToolButton::clicked, TestFunction)
int temp = 123;
connect(ui->toolButton, &QToolButton::clicked, [temp](){
qDebug()<<"Test Function"<<temp;
}); //lambda
优点:
- 编译检查;
- 参数自动隐式转换;
- 不需要指定
public/private slots; - 不需要
moc,任何函数都可以作为槽函数;
缺点:
- 信号不能重载,若有信号重载,则编译错误(信号槽应该避免使用重载);
- 不支持槽函数的默认参数;
Qt之connect的更多相关文章
- qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection
connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用 ...
- qt Cannot connect creator comm socket /tmp/qt_temp.S26613/stub-socket: No such
Tool->Options->Environment->General 将terminal改为 xterm -e
- QT开发实战精解
无法打开包括文件<QApplication> No such file or directory 这一问题 解决办法,使用QApplication时必须在项目pro文件中添加一句 QT ...
- 基于Qt实现的截图小程序
在最近做的行人检测项目中,由于需要训练分类器,而分类器的训练又需要有一个一定长宽的样本.为了方便样本的采集,因此实现了这样的一个截图程序.该程序的主要功能是加载视频到程序中,程序可以对视频进行播放.暂 ...
- Qt之HTTP上传/下载
简述 在前面章节中我们讲述了关于Qt显示网络图片的内容,比较简单,因为图片一般都比较小,下载到本地速度比较快,所以基本不需要什么特殊处理,本节我们主要针对HTTP实现上传/下载进行详细的讲解与分享,包 ...
- Qt:QT右键菜单
Qt QTableView 上加右键弹出菜单, 并复制选中的单元格内容到剪贴板中 http://wenku.baidu.com/view/c51cfb63cf84b9d528ea7a29.html h ...
- 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)
应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在客户端修改或新增加一个文件时,该文件要同步上传到服务器端对应的用户目录下,因此针对数据传输(即:上传.下载)这一块现在既定了三种传输方式,即: ...
- Qt 学习之路 :信号槽
信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被 ...
- Qt信号槽连接在有默认形参下的情况思考
写下这个给自己备忘,比如函数 ) 你在调用端如论是test(3)或者test(),都可以正确调用到这个函数. 但是,如果放到Qt中的信号槽的话,这个还是值得讲一讲的,不然的话,可能会引起相应的误会. ...
随机推荐
- 关于 System.IO.File.Exists 需要注意的事项
各位: .NET Framework 本省在设计的时候,他对于异常没有完全做到抛出,这样可能会有很多意想不到的问题. 比如 你在asp.net 应用程序中判断文件是否存在,这个文件可能是一个共 ...
- SpringBoot集成Shiro实现权限控制
Shiro简介 Apache Shiro是一个功能强大且易于使用的Java安全框架,用于执行身份验证,授权,加密和会话管理.使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移 ...
- 【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection
论文地址:https://arxiv.org/abs/2004.10934v1 github地址:https://github.com/AlexeyAB/darknet 摘要: 有很多特征可以提高卷积 ...
- 树莓派4b 上手三板斧
树莓派4b 上手三板斧 1.无屏幕和网线连接准备 windows / mac 电脑下载安装Notepad++ 新建文件并保存为ssh(该文件为空文件) 新建文件wpa_supplicant.conf ...
- python 利用numpy同时打乱列表的顺序,同时打乱数据和标签的顺序
可用于网络训练打乱训练数据个标签,不改变对应关系 方法一: np.random.shuffle (无返回值,直接打乱原列表) state = np.random.get_state() np.rand ...
- 模拟HTTP请求调用controller
原文参考本人的简书:https://www.jianshu.com/p/0221edbe1598 MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller调用,这样 ...
- 是时候学习python了
“ 学习Pyhton,如何学以致用 -- 知识往问题靠,问题往知识靠” 01 为什么学Python 一直有听说Python神奇,总是想学,虽然不知道为啥.奈何每天写bug,修bug忙得不亦乐乎,总是不 ...
- 通过注册表查询 .Net Framework 的版本
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 注意:即使卸载 .Net Framework 这些注册表依然 ...
- Spring Cloud 系列之 Stream 消息驱动(一)
在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,消息中间件解决了应用解耦.异步处理.流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构. 不同中间件内部实现方式是不一样的,这些中间 ...
- fedora 21下Virtual Box安装Windows XP SP3
Installing Virtual Box and Windows XP SP3 during Fedora 21 The first step:Download and Install Virtu ...