黑马QtDay1学习笔记

news2024/11/25 15:04:51

文章目录

  • 黑马QtDay1学习笔记
    • 1 Qt简介
    • 2 Qt项目创建
      • 2.1 项目名称 不能有空格和中文
      • 2.2 项目路径不能有中文路径
      • 2.3 创建窗口三大基类
      • 2.4 Main函数中
      • 2.5 .pro文件
    • 3 QPushButton按钮
    • 4 Qt中的对象树
    • 5 Qt中的坐标系
    • 6 Qt中信号和槽基本使用
    • 7 自定义信号和槽
      • 7.1 自定义信号 写在 signals下
      • 7.2 自定义槽函数 写在 public 或者全局函数 或者 public slot 或者lambda
      • 7.3 当信号和槽发生重载时候,需要利用函数指针明确指出函数地址
      • 7.4 将QString 转为 char *
    • 8 信号和槽拓展
    • 9 Qt4版本信号和槽写法
    • 10 Lambda表达式
    • 11Qt信号和槽总结

黑马QtDay1学习笔记

1 Qt简介

1.1 发展史

2 Qt项目创建

2.1 项目名称 不能有空格和中文

2.2 项目路径不能有中文路径

2.3 创建窗口三大基类

2.3.1 QWidget类是所有用户界面对象的基类。

2.3.2 QMainWindow提供了一个主应用程序窗口

2.3.3 QDialog 简介:对话框:在主窗口中操作,有可能触发某一个行为动作,会弹出一个新的对话窗口,解决一个临时性的会话,在对话窗口中执行某一个功能。

2.4 Main函数中

2.4.1 QApplication a 应用程序对象 在Qt中 有且仅有一个

2.4.2 MyWidget w 窗口对象

2.4.3 w.show() 函数显示窗口

2.4.4 return a.exec()进入消息循环机制,阻塞功能

2.5 .pro文件

2.5.1 QT += core gui //Qt包含的模块

2.5.2 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于4版本 加入 widgets 模块

2.5.3 TARGET = 01_QtFirst //生成.exe程序的名称

2.5.4 TEMPLATE = app //模板 应用程序模板

2.5.5 SOURCES += main.cpp\ //源文件

2.5.6 mywidget.cpp

2.5.7 HEADERS += mywidget.h //头文件

3 QPushButton按钮

3.1 QPushButton * btn = new QPushButton; 创建按钮对象

3.2 btn - >setParent(this) 设置父亲

3.3 设置显示文本 setText

3.4 移动 move

3.5 重置窗口大小 resize

3.6 设置固定窗口大小 setFixedSize

3.7 设置窗口标题 setWindowTitle

4 Qt中的对象树

4.1 一定程度上简化了内存回收机制

4.2 当创建的对象 指定的父亲是由QObject或者Object派生的类时候,这个对象被加载到对象树上,当窗口关闭掉时候,树上的对象也都会被释放掉

image-20230521113445128

5 Qt中的坐标系

5.1 x以右侧为正

5.2 y以下侧为正

5.3 左上角是 0,0点

6 Qt中信号和槽基本使用

6.1 需求:点击按钮关闭窗口

6.2 连接 connect ( 信号的发送者,发送的信号,信号的接受者,处理的槽函数)

connect( myBtn , &MyPushButton::clicked ,this, &MyWidget::close);

6.3 测试

7 自定义信号和槽

7.1 自定义信号 写在 signals下

7.1.1 返回值是void

7.1.2 只需要声明 不需要实现

7.1.3 可以有参数 可以发生重载

7.2 自定义槽函数 写在 public 或者全局函数 或者 public slot 或者lambda

7.2.1 返回值是void

7.2.2 需要声明 也需要有实现

7.2.3 可以有参数 可以发生重载

7.3 当信号和槽发生重载时候,需要利用函数指针明确指出函数地址

7.3.1 void(Teacher:: *teacherSignal)(QString) = &Teacher::hungry;

7.4 将QString 转为 char *

7.4.1 .toUtf8()转为 QByteArray数据类型

7.4.2 .data() 转为 char * 类型

8 信号和槽拓展

8.1 信号是可以连接信号

8.2 可以断开信号和槽 disconnect

8.3 一个信号可以响应多个槽函数

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

8.5 信号和槽函数的参数类型 必须一一对应,信号的参数个数 可以多余槽函数的参数个数,反之不可以 , 参数类型要一一对应

9 Qt4版本信号和槽写法

9.1 优势 :参数直观

9.2 劣势 :参数类型不做匹配检测

9.3 Qt4本质 SIGNAL(“hungry(int)”)SLOT(“treat(QString)”)

10 Lambda表达式

10.1 mutable -> type {}组成

10.2 []中可以加 = & a &a … 推荐 使用 =

10.3 () 形参列表

10.4 {} 实现体

10.5 mutable可以修改按值传递进来的拷贝

10.6 -> type 代表lambda表达式返回值类型

11Qt信号和槽总结

image-20230521191540512

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

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

相关文章

【C++】——模板(泛型编程+函数模板+类模板)

文章目录 1. 前言2. 泛型编程3. 函数模板3.1 函数模板的原理3.2 函数模板的实例化3.3 模板参数的匹配原则 4. 类模板4.1 类模板的实例化 5. 结尾 1. 前言 之前我们学习了函数重载,让我们在写相似函数的时候非常方便,但函数重载还有很多不足的地方&#…

车载基础软件——嵌入式系统时间特性分析

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他…

AI人工智能逻辑回归的原理、优缺点、应用场景和实现方法

逻辑回归(Logistic Regression)是一种常见的机器学习算法,它被广泛应用于分类问题。在人工智能(Artificial Intelligence,简称AI)领域中,逻辑回归是一种简单而有效的算法,可以用于许…

GC 三色标记算法(Go Java版本)

一、前言 GC全称Garbage Collection,目前主流的垃圾回收算法有两类,分别是追踪式垃圾回收算法(Tracing garbage collection)和引用计数法( Reference counting )。 而三色标记法是属于追踪式垃圾回收算法…

github copilot chat申请,安装,及常见问题解决

申请 首先申请,并开通copilot, 地址为:https://github.com/features/copilot,copilot 一个月10美金,第一个月免费,支持国内的信用卡。 开通copilot之后,可以申请 copilot chat 的预览版功能,网…

5-高级SQL查询

PS:插入查询结果 把一张表查询出的结果,插入到另一张表中。要求两张表的列数和列类型要匹配。 前面讲的所有select规则在此处都适用~ 1.聚合查询 聚合查询:行和行之间进行运算。带表达式查询:列和列之间进行运算。 常⻅的聚合函…

MySQL——聚合函数

我们上一篇讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。接下来我们来看看什么是聚合函数及聚合函数的分类 1. 聚合函数介绍 1.1 什么是聚合函数? 聚合函数作用于…

redis 7.x 缓存双写一致性的解决方案

一 redis缓存双写一致性 1.1 保证redis一致性的原则 1.给缓存设置过期时间,定期清理缓存并写回,是保证最终一致性的解决方案。使用场景:在数据读多写少的情况下作为缓存来使用。 我们可以对已存入缓存的数据设置过期时间,所有…

Qt-学习 QJson协议解析

内容来源于哔站视频,仅仅作为自己的笔记记录,感兴趣的小伙伴去原作品大call(此处给作者三鞠躬),Json以及Json在Qt中的使用 【Qt/C/C】_哔哩哔哩_bilibili 目录 1、Json介绍: 1.1 Json的定义 1.2 Json的数据格式 1…

Java面试知识点(全)- Java并发- Java并发基础

Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 多线程解决什么问题 CPU、内存、I/O 设备的速度是有极大差异的,为了合理利用 CPU 的高性能,平衡这三者的速度差异&#xff0c…

thinkphp6中使用session设置无效问题的解决及注意事项

就如thinkphp官方在文档开头所描述的一样,ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化;其实从5.x版本开始thinkphp本身就是为api应用而生。特别是在6.0版本开始框架默认压根不开启和…

大数据-玩转数据-FLINK(Yarn模式)的安装与部署

一、为什么要用Flink on Yarn HA 模式 默认情况下,Flink 只有一个JobManager,这将导致单点故障,使用JobManager HA ,集群可以从单点故障中恢复,从而避免单点故障,我们可以在Standalone 或 Flink on Yarn 集…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---章节小测微认证考试

微认证考试 1、以下不属于模型适配工具内置的模型的是? A. 目标检测模型 B. 图像分类模型 C. 语义分割模型 D. 关键点检测模型 C 2、模型适配工具安装前需要先安装? A. mobaXterm B. python3.9 C. Vscode D. Anaconda D 3、在哪个目录下可查看端…

docker 部署 -v指令遇到docker: invalid reference format.

检查了半天才发现,换行符后面不能有空格!有空格就报错!

vite创建vue3项目

vite创建vue3项目 方式一(推荐) 脚手架快速创建,勾选依赖的方式 这种方式创建的项目最快捷,因为基本依赖都装好了 npm init vuelatest方式二 使用官方模板创建vue3项目 这种方式会基于模板创建项目,对于官方模板vu…

Rollup 基本概念及使用

Rollup是一款基于ESModule模块规范实现的JavaScript打包工具,在前端社区中赫赫有名,同时也在Vite的架构体系中发挥着重要作用。不仅是Vite生产环境下的打包工具,其插件机制也被Vite所兼容,可以说是Vite的构建基石。 接下来&#…

cesium entity与时间轴关联(添加运动轨迹)

1、先添加一个entity实体 用model加载一个飞机实体 let entity viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(120, 21),model: {uri: "/static/Cesium_Air.glb",minimumPixelSize: 128,maximumScale: 20000,},}) viewer.trackedEntity entity;…

LIN-报文结构

文章目录 协议规范一、字节场二、报文头(HEADER FIELDS)同步间隔(synchronisation break)同步场(SYNCH FIELD)标识符场(IDENTIFIER FIELD) 三、数据场(DATE FIELDS)四、校…

【负载均衡式在线OJ】 数据库

文章目录 41.使用Postman进行综合调试42.了解-前端预备52. 添加oj用户到MySQL53. 使用MySQL_Workbench创建表结构54. 测试录题功能55.重新设计oj_model56.编写oj_model具体代码57.MySQL综合测试58.结项与项目扩展思路 41.使用Postman进行综合调试 完善判题功能 先编译再测试 …

SpingBoot简介—helloworld

目录 一、使用idea创建第一个SpringBoot项目 二、Hello World 三、整体项目结构 一、使用idea创建第一个SpringBoot项目 在进行这一步时,可能会遇到问题,如下图所示: 在这里解决方法有以下四种: (1)方法1&…