网站建设url/百度seo排名培训 优化

网站建设url,百度seo排名培训 优化,java网站开发培训,枣庄专业做网站1. 信号 和 槽 Qt 信号与槽机制 是一种用于对象间通信的低耦合设计模式,核心思想是:当某个信号触发,自动调用预先关联的处理函数(槽函数)。 在 Qt 中,如果一个类需要使用信号与槽机制,则该类必…
1. 信号 和 槽

Qt 信号与槽机制 是一种用于对象间通信的低耦合设计模式,核心思想是:当某个信号触发,自动调用预先关联的处理函数(槽函数)。

在 Qt 中,如果一个类需要使用信号与槽机制,则该类必须继承自 QObject ,且必须在类的私有部分声明 Q_OBJECT

Q_OBJECT 宏 通常位于类定义的顶部。

class MyClass : public QObject // 必须继承自 QObject
{Q_OBJECT // 必须在私有部分声明
};
2. 信号 Signal

通俗意义上,信号 是,在特定事件发生时,发出的通知;其本质是函数声明 —— 通过 signals 关键词声明,没有函数体。

signals:void MySignal(QString text);

特点:

  • 信号的返回值类型必须是 void 。
  • 信号可以携带参数(或者不带),这些参数会被传递给槽函数。
  • 动态绑定 —— 信号与槽的连接在运行时建立。

在 Qt 中,自定义信号建议使用 emit 关键词来显式触发(尽管 emit 是可选的)。

emit MySignal("test");
3. 槽 Slot

是,响应信号的普通函数。槽函数通过 slots 关键词声明(Qt5 后可以省略),本质上是类的成员函数,可以使用 public 、protected 、private 等访问控制符修饰(通常将槽设为 public 或 protected)。

public slots:void MySlot1(int value);
public: // Qt5 版本后可以省略 slotsvoid MySlot2(int value);

槽函数可以像普通函数一样直接调用,无需通过信号触发,且槽函数支持重载(多个同名但参数不同的槽函数)。

4. connect

connect 函数的功能是,将 信号 与 槽 进行绑定,形成响应关系。

在 Qt 发展过程中,connect 函数经历了多次改进,主要目的是提高类型安全性和代码可维护性。

4.1 Qt4 及之前版本

在 Qt4 及之前版本中,使用字符串宏 SIGNAL()SLOT() 传递信号和槽。

connect(button, SIGNAL(clicked()), this, SLOT(MyClick()));
// button 为 QPushButton*
// 第二个参数应传递 SIGNAL(clicked()) 而不是 SIGNAL(QPushButon::clicked())
4.2 Qt5+ 版本

connect(button, &QPushButton::clicked, this, &Widget::MyClick);

关键改进:

  • 支持编译时检查:信号和槽的参数类型在编译时检查,避免运行时错误。
  • 支持槽函数重载,通过使用 static_cast 来帮助编译器选择正确的重载版本。
public slots:void MyClick();             // 第一个重载版本void MyClick(bool checked); // 第二个重载版本
---
// 连接到带参数的 MyClick 槽函数
connect(button, &QPushButton::clicked, this, static_cast<void(Widget::*)(bool)>(&Widget::MyClick));
  • 支持直接使用成员函数指针,如 &QPushButton::clicked 。
  • 支持 lambda 表达式。

在 Qt 的信号槽中,lambda 的捕捉列表推荐使用传值 [=] ,避免捕获的对象在 lambda 表达式执行时已销毁导致未定义行为。

4.3 disconnect

disconnect 的功能是,断开 信号 与 槽 的绑定关系。

“自动连接清理”机制:

当信号发送者 sender 或接收者 receiver 被销毁时,Qt 会自动断开所有相关的信号与槽的连接(一个信号可以连接多个槽,一个槽可以被多个信号所连接),所以通常无需手动 disconnect 。

disconnect(button, &QPushButton::clicked, this, &Widget::MyClick);
5. 继承机制与参数匹配规则

控件会继承其父控件的所有信号、槽和方法,这是面向对象编程中继承机制的核心特性之一。

对于一个控件,可以通过查看 Qt 文档、Inherits (继承自)逐层追溯父类,了解一个控件的所有可用信号和功能等。

5.1 信号和槽继承的原理

信号 和 槽 的本质都是函数,子类会自动继承父类的所有信号和槽(包括直接父类和间接父类)。

5.2 如何逐层查看信号和槽?

通过官方文档中的 Inherits 链 —— Qt 官方文档为每个类提供了完整的继承链信息。

  • QPushButton 自己的信号:文章显示 QPushButton 没有新增信号,主要依赖于父类 QAbstractButton 。

  • QAbstractButton 的信号:通过查阅文档,发现

     void clicked(bool checked = false);void pressed();void released();void toggled(bool checked);
    
  • … …

5.3 信号和槽的参数匹配规则
  • 信号的参数数量 >= 槽的参数数量;

  • 信号和槽的类型必须兼容(允许隐式类型转换)。

signals:void MySignal(QString text1, QString text2);
public slots:void MyHandle(QString text);connect(this, &Widget::MySignal, this, &Widget::MyHandle);emit MySignal("test1", "test2");

当 信号的参数数量 多于 槽函数的参数 时,槽函数会按顺序接收 信号 的前 N 个参数(N 为槽函数的参数数量),多余的信号参数被自动忽略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验8 搜索技术

实验8 搜索技术 一、实验目的 &#xff08;1&#xff09;掌握搜索技术的相关理论&#xff0c;能根据实际情况选取合适的搜索方法&#xff1b; &#xff08;2&#xff09;进一步熟悉盲目搜索技术&#xff0c;掌握其在搜索过程中的优缺点&#xff1b; &#xff08;3&#xff09;…

消费级显卡上ollama部署QwQ32B

ollama部署QwQ32B QwQ32B硬件要求 魔改2080ti 的 22G 显存差不多够用 ollama中的是Q4_K_M量化模型 硬件配置模型推理模型高效微调模型全量微调显存占用最低配置显存占用最低配置显存占用最低配置FP_1664GRTX3090&#xff0a;4&#xff08;94G&#xff09;92GRTX3090&#xff0a…

数字电路 | 触发器 / 单稳态触发器 / 双稳态触发器

注&#xff1a;本文为 “数字电路 | 触发器” 相关文章合辑。 如有内容异常&#xff0c;请看原文。 未整理。 数字电路基础 — 触发器 Oliver-H 已于 2024-04-07 15:06:25 修改 触发器&#xff08;Flip-Flop&#xff09; 也是数字电路中的一种具有记忆功能的逻辑元件。触发…

SSM基础专项复习5——Maven私服搭建(2)

系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架&#xff08;1&#xff09;-CSDN博客 3、SSM基础专项复习3——Spring框架&#xff08;2&#xff09;-CSDN博客 4、SSM基础专项复习4——Maven项目管理工具&#xff08;1&#xff…

11.anaconda中的jupyter使用、及整合dataspell

目录 概述jupyterjupyter notebook1.生成配置文件修改notebook保存目录问题问题2&#xff0c;无法获取token 安装 DataSpell注意配置运行环境DataSpell 使用 概述 前置安装如有问题&#xff1a; 1.Python、anaconda介绍、安装及使用 jupyter jupyter notebook 1.生成配置文…

蓝桥杯 之 回溯之充分剪枝

文章目录 买瓜最大数字 在蓝桥杯当中&#xff0c;对于回溯是属于一个必考的问题&#xff0c;但是除了回溯的几个基本的问题&#xff0c;如果通过剪枝来提前删去无效的分支&#xff0c;以大大减少时间复杂度是需要我们进一步思考的问题&#xff01;回溯的基本问题&#xff1a; 回…

太速科技-636-基于FMC的Kintex XCKU060高性能PCIe载板

基于FMC的Kintex XCKU060高性能PCIe载板 一、板卡概述 板卡主控芯片采用Xilinx 公司的 Kintex UltraScale系列FPGA XCKU060-2FFVA1156。板载 2 组 64bit 的DDR4 SDRAM&#xff0c;每组容量2GB&#xff0c;可稳定运行在2400MT/s。支持PCIE Gen3 x8模式及一路FMC HPC接口。同…

SAP SD学习笔记31 - 销售BOM

上一篇讲 前受金处理(预付款处理)。 SAP SD学习笔记29 - 前受金处理(预收款处理)_fplt 付款申请与sd 数据表的关联关系-CSDN博客 本章继续讲SAP SD模块的其他知识&#xff1a;销售BOM。 销售BOM在现场还是会用到的。 目录 1&#xff0c;销售BOM概要 2&#xff0c;受注BOM的…

动态路径规划——01背包问题讲解和通过滚动数组优化

如果没有动态路径规划基础的兄弟可以出去了&#xff0c;这个题目有两个问题 第一问讲解&#xff1a; 1.定义状态表示 刚开始我做的时候根据我的经验定义了一个状态表示dp[i]表示从1到i个物品中选择的最大价值&#xff0c;但是这个状态表示有一个明显的问题&#xff0c;我怎么知…

Java程序的逻辑控制

目录 1、顺序结构2、分支结构2.1、if 语句2.2、switch 语句 3、循环结构3.1、while 语句3.2、break3.3、continue3.4、for 循环3.5、do while 语句 1、顺序结构 顺序结构比较简单&#xff0c;按照代码书写的顺序一行一行执行。如果调整代码的书写顺序, 则执行顺序也发生变化。…

【鸿蒙开发】Hi3861学习笔记- GPIO之LED

00. 目录 文章目录 00. 目录01. GPIO概述02. 硬件设计03. 软件设计04. 实验现象05. 附录 01. GPIO概述 GPIO&#xff08;General-purpose input/output&#xff09;即通用型输入输出。通常&#xff0c;GPIO控制器通过分组的方式管理所有GPIO管脚&#xff0c;每组GPIO有一个或多…

你的完美主义:从缺陷到超能力

所属专栏&#xff1a;《逻辑辨证系列》 前情回顾&#xff1a; 《完美还是完成》&#xff08;一&#xff09;&#xff1a;完成还是完美—完成大于完美 时间、机会、情绪成本 先完成 … 本期&#xff1a; 《完美还是完成》&#xff08;二&#xff09;&#xff1a;你的完美主…

win32汇编环境,对话框程序中创建托盘示例一

;运行效果 ;win32汇编环境,对话框程序中创建托盘示例一 ;托盘&#xff0c;就是电脑桌面右下角那个角落里的图标&#xff0c;这里展示基本的应用方法。 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>…

Ansible相关工具:ansible-doc、ansible

文章目录 管理方式相关工具ansible-doc命令用法案例 ansibleansible主配置文件日志文件主机清单 ansible命令基本格式&#xff1a;选项说明&#xff1a;ansible的Host-pattern或关系逻辑与逻辑非正则表达式 ansible命令执行过程ansible 的执行状态 管理方式 利用ansible实现管…

使用Python在Word中生成多种不同类型的图表

目录 工具与环境配置 在 Word 中创建图表的步骤 在Word中创建柱形图 在Word中创建条形图 在Word中创建折线图 在Word中创建饼图 在Word中创建散点图 在Word中创建气泡图 在 Word 文档中插入图表不仅能更直观地呈现数据&#xff0c;还能提升文档的可读性和专业性。常见的…

项目-个人博客测试报告

目录 一、项目背景 二、项目功能 三、测试计划 &#xff08;1&#xff09;功能测试 &#xff08;2&#xff09;自动化测试 &#xff08;3&#xff09;性能测试 一、项目背景 1、个人博客系统是一个操作简单的基于Spring前后端分离的项目&#xff0c;同时使用MySQL数据库来进…

如何使用HACS一键集成米家与果家设备到HomeAssistant玩转智能家居

文章目录 前言1. 下载HACS源码2. 添加HACS商店3. 绑定米家设备 前言 各位科技潮人和智能家居发烧友们&#xff0c;是不是也梦想着把家里变成一个高科技的空间&#xff1f;有了群晖NAS这位得力助手&#xff0c;不仅存储空间大得吓人&#xff0c;还能通过Docker轻松安装各种应用…

《Java对象“比武场“:Comparable与Comparator的巅峰对决》

目录 引言&#xff1a; 一、认识接口 1.1 Comparable 1.2 Comparator ​编辑 1.3 核心概念对比 二、代码实现对比 2.1 Comparable 实现示例 2.2 Comparator 实例示例 三、核心区别详解 3.1 设计理念差异 3.2 方法调用 3.3 使用情景 四、本质区别总结 引言&#x…

Android自动化测试工具

细解自动化测试工具 Airtest-CSDN博客 以下是几种常见的Android应用自动化测试工具&#xff1a; Appium&#xff1a;支持多种编程语言&#xff0c;如Java、Python、Ruby、JavaScript等。可以用于Web应用程序和原生应用程序的自动化测试&#xff0c;并支持iOS和Android平台。E…

vue3:八、登录界面实现-页面初始搭建、基础实现

一、初始工作 1、创建登录文件 在src/views中创建文件LoginView.vue文件 2、创建路由 在router/index.js中增加登录的信息 代码 import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vue const router createRouter({hist…