当前位置: 首页 > news >正文

QT信号与槽机制 和 常用控件介绍

QT信号与槽机制

1、信号(signal): 所谓信号槽 (观察者模式)信号本质是事件。信号展现方式就是函数。当某一个事件发生之后,则发出一个信号(signal).
2、槽(slot): 就是对信号响应的函数,槽就是一个函数。槽函数与普通函数区别槽函数可以与一个信号关联,当信号被发射的时候,关联的槽函数被自动执行处理。信号与槽关联是使用 QObject::connect0函数进行实现。

信号函数只需要声明(不需要定义(实现) )而槽函数需要定义 (实现信号和槽机制底层是通过函数之间进行相互调用实现的。每个信号都可以用函数来表示,称为信号函数; 每个槽也可以用函数表示,称为槽函数槽函数可以使用 public slots/protected slots/private slots 修饰。signals和 slots 是 Qt 开发当中在 C++语言基础之上扩展的关键词,专门用于指明信号函数和槽函数

QObject::connect(......):

  • ​​​​​​​参数 1sender: 发出信号的对象;
  • 参数 2signal:sender 对象的信号
  • 参数 3receiver: 信号接收者
  • 参数 4method: receiver 对象的槽函数,当检测到 sender 信号,receiver
  • 对象调用 method 方法

​​​​​​​3、信号与槽机制连接方式
一个信号可以跟另一个信号相连
conect(object1,SIGNAL(signal1),object2,SIGNAL(signal1))


同一个信号可以跟多个槽相连
conect(object1,SIGNAL(signal2)object2,SIGNAL(slot2));
conect(object1,SIGNAL(signal2),object3,SIGNAL(slot1))


同一个槽可以响应多个信号
conect(object1,SIGNAL(signal2),object2,SIGNAL(slot2))
conect(object3,SIGNAL(signal2)object2,SIGNAL(slot2));

4、信号和槽机制优势: 松散羯合:类型案例。一个类若要支持信号
和槽,就必须从 QObiect 或 QObect 的子类继承。Qt 信号和槽机制不支持对模板的使用


5、信号与槽机制效率: 增强对象的之间通信的灵活性,但是也会损失一些性能。通过传递一个信号来调用槽函数将会比直接调用非虚函数运行速度慢,主要原因:

  1. 多线程的时候,信号可能需要排队等待
  2. 编组/解组传递的参数
  3. 安全地遍历所有的关联
  4. 需要定位接收信号的对象

GUI继承简介

布局管理器

  • 垂直布局
  • 水平布局
  • 网格布局
  • 表单布局

输出控件

  • Label: 标签
  • Text Browser: 文本浏览器
  • Graphics View : 图形视图框架
  • Calendar Widget: 日历控件
  • LCD Number: 液晶字体数字控件
  • Progress Bar: 进度条
  • Horizontal Line/Vertical Line: 水平线/垂直线
  • OpenGL Widget : (Open Graphics Library) 图形渲染控件
  • QQuickWidget : QML 嵌入控件

输入控件

  • 编辑组合框
  • 字体组合框
  • 行编辑框
  • 文本编辑
  • 多行文本编辑
  • 整数旋转框
  • 小数旋转框
  • 时间编辑
  • 日期编辑
  • 时间/日期编辑
  • 表盘控件
  • 水平滚动条
  • 垂直滚动条
  • 水平滑动条   
  • 垂直滑动条           

按钮

  • 按钮
  • 工具按钮
  • 单选按钮
  • 复选框

容器

  • 组框
  • 滚动区域
  • 工具箱
  • 选项卡窗口
  • 堆窗口
  • 框架
  • 窗口(小部件)
  • (Multiple Document Interface Area)多文档界面区域
  • 停靠窗口(停靠小部件)

http://www.lryc.cn/news/187171.html

相关文章:

  • 【css-banner图片自适应】
  • 【k8s管理操作】
  • 【java基础学习】之DOS命令
  • 学习记录——StyleGAN2+SA-UNet
  • JVM222
  • C语言 指针
  • YOLOv8血细胞检测(7):小目标大目标一网打尽,轻骨干重Neck的轻量级GFPN | 阿里ICLR2022 GiraffeDet
  • 广度优先(BFS)(例子:迷宫)
  • 【安卓源码】安卓Watchdog 机制
  • inscode连接不上gpu,持续8小时,为了数据不丢失续费了6小时,我只想知道什么时候可以连接
  • QT位置相关函数
  • vulnhub靶场 Kioptrix-level-1
  • 全网最细,真实企业性能测试落地实施,一文带你快速打通...
  • 三十一、【进阶】B+树的演变过程
  • 算法通过村第十三关-术数|白银笔记|术数高频问题
  • Java 线程的生命周期
  • Vue页面监听键盘按键的多种方法
  • 解析硬件连通性测试的重要性及测试方法
  • Hive窗口函数回顾
  • flink自定义窗口分配器
  • iOS CGRect CGPoint NSRange等结构体的NSLog打印输出
  • Viper FTP Mac/ftp管理工具
  • web漏洞-xml外部实体注入(XXE)
  • Impeller-Flutter的新渲染引擎
  • python 面试算法题
  • Python中的yield关键字
  • 怎么压缩pdf文件?分享缩小pdf文件的简单方法
  • 51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)
  • Vuex的介绍
  • mysql基础语法速成版