widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>//Teacher 老师类
//Student 学生类
//下课后,老师会触发信号,饿了,学生响应信号,请客吃饭Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//创建一个老师对象this->teacher1 = new Teacher(this);//创建一个学生对象this->student1 = new Student(this);//    //老师饿了,学生请客的连接
//    connect(teacher1, &Teacher::hungry, student1, &Student::treat);//    //调用下课函数
//    classIsOver();//连接带参数的信号和槽//指针 -> 地址//函数指针 -> 函数地址void(Teacher:: *teachersignal)(QString) = &Teacher::hungry;void(Student:: *studentslot)(QString) = &Student::treat;//重载函数使用无参函数//void(Teacher:: *teachersignal)(QString) = &Teacher::hungry;//void(Student:: *studentslot)(QString) = &Student::treat;connect(teacher1, teachersignal, student1, studentslot);//classIsOver();//点击一个下课的按钮,再触发下课QPushButton * btn1 = new QPushButton("下课",this);QPushButton * btn2 = new QPushButton("下课",this);btn2->move(100,0);//重置窗口大小resize(600, 400);//点击按钮触发下课connect(btn1, &QPushButton::clicked, this, &Widget::classIsOver);//无参信号和槽连接void(Teacher:: *teachersignal2)(void) = &Teacher::hungry;void(Student:: *studentslot2)(void) = &Student::treat;connect(teacher1, teachersignal2, student1, studentslot2);//信号连接信号connect(btn2, &QPushButton::clicked, teacher1,teachersignal2);//断开信号//disconnect(teacher1, teachersignal2, student1, studentslot2);//拓展//1、信号是可以连接信号的//2、一个信号可以连接多个槽函数//3、多个信号可以连接同一个槽函数//4、信号和槽函数的参数,类型必须一一对应//5、信号的参数个数可以多于槽函数的参数个数//Qt4版本以前的信号和槽连接方式//利用Qt4信号槽连接无参版本//Qt4版本 底层SIGNAL("hungry") SLOT("treat")//connect(teacher1, SIGNAL(hungry()), student1, SLOT(treat()));//Qt4版本优点:参数直观 缺点:类型不做检测//Qt5以上支持Qt4写法,反之不支持}void Widget::classIsOver()
{//下课函数,调用触发老师饿了的信号emit teacher1->hungry("宫保鸡丁");//重载函数使用无参函数//emit teacher1->hungry();}Widget::~Widget()
{delete ui;
}

Qt——P13 Q4版本信号槽连接相关推荐

  1. Qt之connect函数—信号槽连接的几种方式和优缺点

    connect函数在qt中作为连接信号和槽的函数,并不陌生.它目前有以下3种写法: 1.使用SIGNAL和SLOT宏 connect(ui->pushButton,SIGNAL(clicked( ...

  2. 【Qt开发经验】Qt信号槽连接不成功问题原因汇总

    以下几种情况会导致信号槽连接不成功,下面分别描述. 1. 拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏. Qt帮助手册里搜索 "Signals & Slots&qu ...

  3. QT源码剖析-QT对象通信机制信号槽的绑定具体实现

    本文详细介绍QT核心机制之一 信号和槽. 我们在此根据Qt源代码一步一步探究其信号槽的实现过程. 核心知识点: 模板元编程技术. Qt moc预编译机制. QObject类. 目录 1. QObjec ...

  4. VS2008 Qt Designer 中自定义信号槽

    一.Qt Designer自定义槽函数 发现:在VS2008 +Qt4.7  中打开ui文件,所用的英文QT Designer工具,没有转到槽函数的功能,不如QtCreator自带的QtDesigne ...

  5. linux下qt加载boost,信号槽的实现实例—— Qt 和 Boost

    Qt 的信号槽和 Boost.Signals 由于有着截然不同的设计目标,因此二者的实现.强度也十分不同.将二者混合在一起使用也不是不可能的,我们将在本系统的最后一部分来讨论这个问题. 使用信号槽 信 ...

  6. 【Qt学习】04 信号-槽 子窗口向主窗口传递参数

    概述 学习内容:子对话框向主对话框发送消息,使用SIGNAL-SLOT实现. 环境 IDE:Qt creator 4.11.0 编译器:MinGW 5.3.0 32bit for C++ 例子 1.s ...

  7. qt 信号多个链接槽_Qt原理窥探信号槽的实现细节

    简介 本文是<Qt进阶之路>系列文章的特别篇,涛哥在这里讨论Qt信号-槽的实现细节. 上次的文章<Qt实用技能4-认清信号槽的本质>中介绍过,信号-槽是一种对象之间的 通信机制 ...

  8. Qt编程中的信号和槽机制

    Qt编程中的信号和槽机制 在使用自定义类创建一个按钮之后,只能看到一个按钮的图形,但是使用鼠标点击并无任何反应,下面想要实现一个"点击按钮可以关闭窗口"的功能. 关闭窗口的功能可以 ...

  9. Qt信号槽机制详解及案例

    目录 信号槽 标准信号槽 自定义信号槽 信号槽 信号槽是Qt框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signa ...

最新文章

  1. SAP ABAP老司机平时是怎么做代码审查的
  2. Linux下生成指定大小文件(命令+Java程序)
  3. GoogleNet网络详解与keras实现
  4. Qt工作笔记-如何打包我们用 Qt 写的软件 - Linux 篇
  5. 最近用的几个sql语句
  6. 在此服务上找不到此服务_windows无法连接到服务,此问题阻止标准用户登录,怎么办?...
  7. 使用Libxml2解析xml[转]
  8. php上传图片大小判断,jQuery实现判断上传图片类型和大小的方法示例
  9. Eclipse“ctrl+左键”链到实现类
  10. C语言在main中输入2个整数ab,请教一个C语言问题。若输入3个整数3,2,1,则以下程序输出的结果是.,c 语言问题 输入三个整数 按从小到大输出...
  11. springboot yml多环境开发
  12. 3D物理引擎JiglibFlash
  13. 基金公司产品管理系统搭建与推广
  14. graphpad做饼图_超省钱的早餐攻略!这些边角料可别扔,多做一步变大餐!
  15. idea进入方法快捷键详情大全(idea快捷键大全最新设置)
  16. java 页面换行_java 页面换行处理
  17. 如何看待加多宝与王老吉商标案发回重审?
  18. TzT233的大盘鸡(未完成)
  19. VUE纯前端导出excel表格功能《转载》
  20. LPC1768 SSP0驱动示例——SD卡驱动

热门文章

  1. 怎么测试本地网页在不同分辨率下电脑显示效果_4K商用超值利器 飞利浦272P7VPTKEB显示器评测...
  2. 1.5_insert_sort_插入排序
  3. 叉积 微分 恒等式_4分钟带你认识向量的极化恒等式。
  4. AI技术人才成长路线十大方向
  5. xmpp协议详解一:xmpp基本概念
  6. fastJson工具类
  7. Android指纹识别
  8. django 中的用户身份验证和 session 的关系
  9. JAVA和C#,武当和少林之争!
  10. Linux---线程安全