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

信号 和 槽

信号和槽是一种通信机制,用于 Qt 对象之间的通信
Qt 对象:

        QObject 类及其派生类的对象,称为 Qt 对象


信号和槽的本质就是函数

        当一个Qt对象的内部状态发生改变时,就可以发出一个信号

        当一个Qt对象收到这个信号后,就可以执行指定的功能


信号和槽的连接:
        QObject 类提供了一个函数connect(),用于连接两个Qt 对象的信号和槽

        对于Qt对象的通信,Qt系统需要了解如下信息:

                哪个对象发出了信号

                发出了什么信号

                哪个对象接收信号

                收到信号后做什么

        

        所以,connect 函数的常规参数如下:

        connect(sender, SIGNAL(信号函数名(参数类型)), receiver, SLOT(槽函数名(参数类型)));

        说明:

                sender 与 receiver 是Qt对象的地址

                connect函数需要执行一次,且只需要执行一次。所以,一般情况下,connect函数通常出现在构造函数中

                所有的界面元素对象,都可以进行通信,而且还预定义了一些信号和槽,可直接使用

                如果预定义的信号和槽功能不能满足项目的需要,还可以自定义信号和槽

                

                自定义信号:

                1. 在头文件中声明信号

                        signals:

                                返回类型  信号函数名(参数列表);

                2. 使用信号

                        发信号:emit 信号函数名(参数列表);

                

                自定义槽:

                1. 在头文件中声明槽函数

                        public/private/protected slots:

                                返回类型  槽函数名(参数列表);

                2. 在源文件中添加定义

                        返回类型  类名::槽函数名(参数列表) {

                                // 槽函数体

                        }

                3. 使用        

                        可以使用普通函数一样的直接调用槽函数
                        可以用connect与某个信号相关联,当连接的信号发出时,立即自动调用该槽函数


        信号和槽的连接有两种形式:

                手动连接:自己调用connect函数,连接两个对象的信号和槽

                自动连接:从界面设计器中 右键 转到槽,自动生成槽函数,根据对象名和信号函数名,自动连接

        用其中之一即可

        一般呢,是能转到槽,就转到槽,否则就自己书写connect

        

        例:

                按钮 最常见的信号 叫 clicked()

                按钮 也有自带的槽函数,如:show() / hide() / setText() ......

                界面 常用的槽函数,有 show() / close() / hide() ......


http://www.mrgr.cn/news/60714.html

相关文章:

  • 博客搭建之路:hexo搜索引擎收录
  • 六西格玛黑带培训:ROI如何算,效益怎么看?
  • qt配置https请求
  • java小白到架构师技术图谱
  • 前后端开发工程师想要从事人工智能 的学习步骤
  • vuetify重置样式
  • “雷鸟效应”引领全民AR新纪元:专注影音体验,打造消费级AR天花板
  • 理想传输线等效模型与特性阻抗
  • 实现RPC接口的demo记录
  • Windows端口管理与进程控制
  • redis数据类型介绍
  • EXPORT_SYMBOL 底层原理
  • (蓝桥杯C/C++)—— 编程基础
  • Lomda表达式与函数式接口
  • 爬虫ip与反爬虫的“猫鼠游戏”
  • java基础(Object篇)
  • Python 基础语法 - 赋值运算符
  • auto占位符(C++11~C++17)
  • C语言实现高并发编程——线程池
  • Open3D-Geometry-14:Distance Queries距离查询方法将网格生成为隐式表示
  • 【专题】关系模型的基本理论
  • 使用chatglm API处理论文
  • 排序算法简记
  • 五、Hadoop 分布式文件系统(HDFS)的原理与架构专业解析
  • python 数据结构 1
  • 一文贯通RAG的技术介绍和构建(简易版+附详细代码)