QT学习小结之信号与槽
2016-06-09 20:35
459 查看
信号与槽函数是我们学习QT必备的基础知识,今天跟大家分享我学习QT的一些总结吧。信号槽机制是Qt编程的基础。通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯。槽函数和普通的C++成员函数没有很大的区别。它们也可以使virtual的;可以被重写;可以使public、protected或者private的;可以由其它的C++函数调用;参数可以是任何类型的。如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用。信号与槽函数的连接我们可以用connect函数:
7、函数指针不能作为信号与槽函数的参数,同时信号与槽函数也不能有缺省参数
8、友元声明不能位于信号或槽函数声明区内
9、信号与槽不能携带模板类参数
10、嵌套的类不能位于信号与槽函数区域内,也不能有信号或者槽函数
在使用信号与槽机制的时候,要注意避免陷入死循环,即在槽函数中再次发送所接收到的信号。
connect(sender,SIGNAL(signal()),receive,SLOT(slot()));需要注意的几点问题:1、一个信号可以和多个槽相连(槽函数被调用的顺序是随机的)
connect(sender,SIGNAL(signal()),this,SLOT(slot_1()));connect(sender,SIGNAL(signal()),this,SLOT(slot_2()));2、多个信号可以连接同一个槽函数
connect(sender,SIGNAL(signal_1()),this,SLOT(slot()));connect(sender,SIGNAL(signal_2()),this,SLOT(slot()));3、一个信号可以连接另外一个信号
connect(sender,SIGNAL(signal_1()),this,SIGNAL(signal_2()));4、信号与槽函数之间的连接可以被取消
disconnect(sender,SIGNAL(signal()),this,SLOT(slot()));5、信号与槽函数的参数个数、类型以及出现顺序必须一致,另外,当信号的参数个数多于槽函数时,信号多出的参数将会被忽略掉
connect(sender,SIGNAL(signal(int,const Qstring &)),this,SLOT(slot(int b,const Qstring &)));connect(sender,SIGNAL(signal(int,const Qstring &)),this,SLOT(slot(int)));//此时const Qstring &将会被忽略6、宏定义不能用在signal和slot的参数中
7、函数指针不能作为信号与槽函数的参数,同时信号与槽函数也不能有缺省参数
8、友元声明不能位于信号或槽函数声明区内
9、信号与槽不能携带模板类参数
10、嵌套的类不能位于信号与槽函数区域内,也不能有信号或者槽函数
在使用信号与槽机制的时候,要注意避免陷入死循环,即在槽函数中再次发送所接收到的信号。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- RJ-45接口信号定义
- linux下基于C语言的信号编程实例
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Android实现信号强度监听的方法
- perl中使用signal(信号)实例
- Qt for Android开发实例教程
- Linux线程同步之信号C语言实例
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索