信号函数:

connect(btn,&QPushButton::clicked,this,&QWidget::close);
//参数1 信号发送者;
//参数2 信号;---&发送者的类名::信号名字
//参数3 信号接受者;参数4 槽函数)
//参数4 槽函数 ----&接受的类名::槽函数

自定义类的信号和槽函数:

例子一:不带参数

例子2---带参数

视频教程:https://www.bilibili.com/video/av66373980/

signals:
void xiake(QString str);//自定义一个信号--带传送参数
public slots:
void huodong(QString str); //声明一个槽函数--带接受参数
void Student::huodong(QString str){  //槽函数实现体
qDebug()<<"学生开始活动了:"<<str;
}
Teacher* th=new Teacher(this);
Student* sd=new Student(this);
void(Teacher::*p)(QString)=&Teacher::xiake; //定义函数指针
void(Student::*p1)(QString)=&Student::huodong;
connect(th,p,sd,p1);//连接信号与槽函数
emit th->xiake("做操");//发出信号

如果不是重载函数,也可以:connect(th,&Teacher::xiake,sd,&Student::huodong);

信号和槽函数出现同名重载时,用函数指针来区分

信号连接信号:

QPushButton* btn=new QPushButton("按钮",this);
btn->move(,); Teacher* th=new Teacher(this);
Student* sd=new Student(this);
void(Teacher::*p)(void)=&Teacher::xiake;
void(Student::*p1)(void)=&Student::huodong; connect(btn,&QPushButton::clicked,th,p);//信号连接信号
//点击按钮就发出th的xiake信号
connect(th,p,sd,p1);
//th信号连接sd的槽函数 //disconnect(th,p,sd,p1);//断开信号与槽函数的连接

注意:一个信号可以连接多个槽函数

多个信号也可以连接一个槽函数

槽函数的参数可以少于信号参数,但是类型必须一一对应

在VS中自定义槽函数:https://blog.csdn.net/qq_36880027/article/details/96627918

qt5-信号和槽的更多相关文章

  1. Qt5信号与槽C++11风格连接简介

    最近在论坛上看到了这个方面的问题,详见这里. 随后浅浅地学习了一下子,看到了Qt官方论坛上给出的说明,觉得C++11的functional连接方法还是比Qt4既有的宏连接方法有很大不同. 官方论坛的文 ...

  2. Qt5信号和槽机制

    信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被 ...

  3. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  4. Qt5 UI信号、槽自动连接的控件重名

    Qt5 UI信号.槽自动连接的控件重名 来源 http://blog.csdn.net/goldenhawking/article/details/51865909 对Qt5稍有熟悉的童鞋都知道信号. ...

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

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

  6. Qt5 UI信号、槽自动连接的控件重名大坑(UI生成的槽函数存在一个隐患,即控件重名。对很复杂的控件,不要在 designer 里做提升,而是等到程序启动后,再动态创建,可以避免很多问题)

    对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http: ...

  7. Qt5教程: (4) 带参数信号与槽

    在subwidget.h中声明一个signal. 和之前的信号函数重名但是有参数: void backSignal(QString); 之后在subwidget.cpp的槽函数sendSignal() ...

  8. Qt5教程: (2) 信号与槽

    1. 新建工程 新建一个"Qt Widgets Application"工程 2. 添加按钮 一个Qt工程会有很多个控件, 如果把逻辑代码都写在main函数里, main函数会非常 ...

  9. Qt5 connect 重载信号和槽

    转载文章超哥的经验之谈---Qt5 connect使用之"重载信号和槽" 在Qt4中,关联信号与槽是要使用到SIGNAL()和SLOT()这两个宏. QLabel *label = ...

  10. QT5中的信号与槽与C++ 11的function的配合

    最近将公司的界面开发库从WX转换到了QT,有了信号和槽,原本我们在使用WX的时候,为了使用信号,我们是使用BOOST的signal2库,到了QT有了信号槽,这个就没什么必要了 但是前段时间使用QT发现 ...

随机推荐

  1. "a++" 与 "++a" 的区别-演示

    两种表示方法经常容易混淆, 在这里将利用演示程序来揭示两者之间的区别, 演示代码如下 int main() { ; cout << "a=1 " << &q ...

  2. 【miscellaneous】最新HEVC/H.265 4K视频,显卡解码测试

    转载自:http://bbs.zol.com.cn/diybbs/d34441_76103.html 4K这个概念也在最近几年开始流行了起来,无论是4K显示器.4K电视盒子,还是4K游戏对硬件的要求也 ...

  3. 通道的分离与合并,ROI,

    通道的分离与合并 class Program { static void Main(String[] args) { Mat img = CvInvoke.Imread(@"C:\Users ...

  4. 第四周课程总结&实验报告二

    第四周课程总结 第四周课程总结 本周重点为学习String;首先String用以创建字符串,且通过有一次课堂练习加强理解到:String 类是不可改变的,一旦创建了 String 对象,那它的值就无法 ...

  5. Spring(十二)--Spring AspectJ

    Spring AspectJ AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件. As ...

  6. HDU 4253-Two Famous Companies(二分+最小生成树)

    Description In China, there are two companies offering the Internet service for the people from all ...

  7. java -cp 执行jar包里的某个类

    当我们需要测试某个功能时,需要在linux环境下执行某个类的main方法来测试 可以使用java -cp xxx.jar com.MyClass来执行某个类 java -cp test.jar:lib ...

  8. 安装kubuctl

    安装和设置kubectl 使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序.使用kubectl,可以检查集群资源; 创建,删除和更新组件. 以下是安装kube ...

  9. O005、远程管理 KVM 虚机

    参考https://www.cnblogs.com/CloudMan6/p/5256018.html   上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机,其实 virt ...

  10. hiper、sitespeed性能工具

    https://github.com/pod4g/hiper   hiper:   A statistical analysis tool for performance testing https: ...