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

qt 的基础学习计划列表

1 第一天 (qt 的基础)

什么是qt
hello程序,空窗口
添加按钮(对象树、父子关系)
按钮的功能(信号和槽)
信号和槽的拓展

2 第二天 各个控件

最简单的记事本界面(菜单栏、状态栏、工具栏)
使用ui和资源文件
创建对话框
各个控件以及布局

3 第三天 高级

捕捉鼠标(qt的事件,鼠标事件)
定时器事件
绘图事件、绘图设备
文件读写

4 第四天、第五天案例——翻金币的游戏

5 第一个hello程序,qt的项目结构

创建项目的时候 QWidget、QMainWindow、QDialog注释 QWidget 是所有能看到的窗口或者控件的父类,QMainWindow、QDialog 都继承自它main函数QApplication 就是Qt里边每个应用程序有且仅有一个的应用程序对象QApplication::exec()   程序的生命循环、消息循环 ,当作以下形式while(1)* {*      if(点击x按钮)*          break;*      if(点击了最小化按钮)*          最小化动作;*      ...* }Widget头文件:Q_OBJECT //宏,引入qt信号和槽的一个宏HelloWidget(QWidget *parent = 0);//parent窗口指针,父窗口对象的指针//如果parent为0或者NULL,表示当前窗口对象是个顶层窗口//顶层窗口就是在任务栏可以找到的窗口.pro文件QT       += core gui    # 引入qt的模块 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets   #如果qt版本号大于4,就引入widgets模块#指定目标,生成可执行程序的名字TARGET = 01_hello#模板,生成什么文件,app表示应用程序exe,lib 就是生成库TEMPLATE = appQt里边绝大部分的类都是继承自QObject ,QObject是一个顶层类

6 父子关系

默认情况下按钮没有认干爹的情况下,是个顶层窗口
想要按钮显示在窗口上,就要跟窗口构造父子关系
1 setParent 
2 构造函数传参

7 Qt坐标系

是以父窗口的左上角为0,0
以向右的方向为x的正方向
以向下的方向为y的正方向
顶层窗口就是以屏幕左上角为0,0

8 QT常用API函数

move 移动窗口到父窗口某个坐标
resize 重新设置窗口的大小
setFixedSize 设置窗口的固定大小
setWindowTitle 设置窗口标题
setGeometry 同时设置窗口位置和大小,相当于move和resize的结合体

9 对象树

概念:各个窗口对象通过建立父子关系构造的一个关系树
内存管理:父对象释放的时候会自动释放各个子对象(使用children列表)以后基本都是用new的方式来创建窗口对象
注意点:1 父对象能够被释放2 父对象、子对象,直接或者间接继承自QObject

10 信号和槽

按钮
被点击
窗口
关闭建立四者的关系(按钮 被点击 窗口 关闭)信号发送者
信号
信号接收者
槽:信号的处理动作
默认情况下,它们四者没有关系,通过connect 建立四者的关系conncet(信号发送者,信号,信号接收者,槽)信号和槽,本质都是函数connect里边4个参数都是指针
connect(btn,&QPushButton::clicked,this,&Widget::hide);使用connect的时候保留&符号
1 提高代码可读性
2 自动提示

11 自定义信号和槽

自定义信号1 函数声明在类头文件的signals 域下面2 void 类型的函数,没有返回值3 可以有参数,也可以重载4 只有声明,没有实现定义5 触发信号 emit obj->sign(参数...)自定义槽1 函数声明在类头文件的public/private/protected slots域下面(qt4以前的版本)qt5 就可以声明在类的任何位置,还可以是静态成员函数、全局函数、lambda表达式2 void 类型的函数,没有返回值3 可以有参数,也可以重载4 不仅有声明,还得有实现场景:下课了,老师说他饿了,学生就请吃饭信号发送者:老师信号:老师饿了信号接收者:学生槽:请吃饭
创多少个类:Teacher Student
信号: hungry 1个 Teacher
槽:treat 1个 Student 带参数的自定义信号和槽,就声明函数的时候就带上参数就行
老师说他饿了,说要吃黄焖鸡,学生就请吃黄焖鸡调用带参数的信号函数 emit pTeacher->hungry("黄焖鸡");参数二义性问题:1 使用函数指针赋值,让编译器自动挑选符合类型的函数2 使用static_cast 强制转换 ,让编译器自动挑选符合类型的函数

12 信号和槽的拓展

1 一个信号可以连接多个槽一个信号建立了多个connect那么当信号发射的时候,槽函数的调用顺序:随机
2 一个槽可以连接多个信号3 信号可以连接信号connect(第一个信号发送者,第一个信号,第二个信号发送者,第二个信号)4 信号可以断开连接,disconnectconnect 参数怎么填,disconnect就怎么填5 信号和槽的参数关系,必须同时满足以下两点1 信号和槽函数的参数类型必须对应2 信号和槽函数的参数个数不需要一致,信号函数参数个数>=槽函数参数个数hungry(QString)    ->       treat()         okhungry(QString)    ->       treat(int)         编译出错hungry(QString,int)    ->   treat(int)         编译出错

13 Qt4 的信号和槽

使用两个宏 SIGNAL   、 SLOT
connect使用不一样,信号和槽函数声明差不多connect(信号发送者,SIGNAL(函数原型) ,信号接收者,SLOT(函数原型))好处:没有重载二义性的问题
坏处:写错了,编译期间不报错SIGNAL和SLOT宏的原理,就是将后边的参数转成字符串      类似 #define toStr(arg)  #arg     -> "arg"推荐:以后都用qt5的    

14 QDebug

qdeubg输出QString默认会转义//解决方法两个
//1 将QString转成 char *
//qDebug()<<"Student treat teacher with "<<what.toUtf8().data();//2 使用qDebug().noquote()
qDebug().noquote()<<"Student treat teacher with "<<what;

15 lambda表达式

[capture](parameters) opt ->retType
{
……;
}[capture] 捕获外部局部变量的列表,值传递,直接填变量名 ,引用传递就使用&变量名使用= 值传递捕获所有局部变量使用& 应用传递捕获所有局部变量有特殊的捕获方式的变量在后边另外指定如果是值传递捕获进来的变量默认是const , 需要修改的话要使用 mutable选项
返回值类型可以省略,编译器自动计算返回值以后都推荐使用 [=](){} 的形式

相关文章:

qt 的基础学习计划列表

1 第一天 &#xff08;qt 的基础&#xff09; 什么是qt hello程序&#xff0c;空窗口 添加按钮&#xff08;对象树、父子关系&#xff09; 按钮的功能&#xff08;信号和槽&#xff09; 信号和槽的拓展2 第二天 各个控件 最简单的记事本界面&#xff08;菜单栏、状态栏、工具…...

CSS中如何改变鼠标指针样式(cursor)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS中改变鼠标指针样式&#xff08;cursor&#xff09;⭐ 示例&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…...

SpringMVC-2-Spring MVC拦截器详解:从入门到精通

SpringMVC-2-Spring MVC拦截器详解&#xff1a;从入门到精通 今日目标 能够编写拦截器并配置拦截器 1.拦截器【理解】 1 拦截器介绍 1.1 拦截器概念和作用 拦截器&#xff08;Interceptor&#xff09;是一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方…...

探索AIGC人工智能(Midjourney篇)(一)

文章目录 案例图片 Midjourney注册 创建Discord账号 下载客户端 添加Midjourney到自己的服务器 用Midjourney画一只会飞的鸭子 Midjourney绘画指令 Midjourney绘画指令_激发Midjourney的创造力 Midjourney绘画指令_Seed指令 Midjourney光线关键词&#xff0c;打造震撼…...

【IMX6ULL驱动开发学习】11.Linux之SPI驱动

参考&#xff1a;驱动程序开发&#xff1a;SPI设备驱动_spi驱动_邓家文007的博客-CSDN博客 目录 一、SPI驱动简介 1.1 SPI架构概述 1.2 SPI适配器&#xff08;控制器&#xff09;数据结构 1.2 SPI设备数据结构 1.3 SIP设备驱动 1.4 接口函数 二、SPI驱动模板 一、SPI驱动…...

什么是网络中的服务质量 (QoS),其相关技术和关键指标有哪些?

QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;指一个网络能够利用各种基础技术&#xff0c;为指定的网络通信提供更好的服务能力&#xff0c;是网络的一种安全机制&#xff0c;是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来…...

Django(4)-Django 管理页面

创建一个管理员账号 python manage.py createsuperuser运行项目&#xff0c;访问http://127.0.0.1:8080/admin&#xff0c;可以看到管理员界面 管理页面加上投票应用 polls/admin.py from django.contrib import admin# Register your models here. from .models import …...

js的使用之时间如何定义,窗口加载事件

1.时间如何定义 1.1 date的其他的属性 带出星期几的写法 var arr [星期日,星期一,星期二,星期三,星期四,星期五,星期六,星期天] var day date.getDay(); console.log(arr[day]); 1.2 日期的格式化 1.3 时分秒的写法 固定写法&#xff1a;如果想要写成00:00:00这种形式&am…...

会声会影2023全新中文专业版下载安装教程

熟练使用会声会影视频编辑工具&#xff0c;对视频创作过程的帮助是极大的。大家可以放心大胆地去研究会声会影的视频编辑技巧&#xff0c;会声会影2023与以往版本会声会影版本最大的区别是&#xff1a;账户制管理。可以通过账户添加或移除设备&#xff0c;非常便捷。该软件一直…...

excel处理公式获得最终值--------------gxl

/*** 读取单元格内容 包括计算公式的结果&#xff0c;引用公式的结果* param cell* return*/public static String getCellValue(Cell cell){System.out.println(cell);String value null;if(cell ! null){System.out.println(cell.getCellType());switch (cell.getCellType()…...

变量函数及销毁函数中的变量-PHP8知识详解

今天分享php8知识详解中的变量函数及销毁函数中的变量&#xff0c;以及相应的示例代码。 1、变量函数 变量函数&#xff0c;是指通过变量来访问的函数。当变量后有圆括号时&#xff0c;PHP将自动寻找与变量的值同名的函数&#xff0c;然后执行该函数。 变量函数引用&#xf…...

Unity Alembic闪烁问题

最近在做项目时&#xff0c;发现Clo3D导出的服装abc动画&#xff0c;导入到Unity中后(已提前导入Alembic插件)&#xff0c;运行时屏幕会闪烁(变黑)。 经过几轮测试&#xff0c;发现是切线的问题。解决办法很简单。将abc文件上的Tangents属性值改为None即可。...

结构型模式-适配器模式

适配器模式* 定义&#xff1a;适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。 这种模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口…...

数据结构:线性表之-顺序表

目录 1.线性表概念 1.1 什么是顺序列表 1.2 线性表 2.顺序表实现 将有以下功能&#xff1a; 详细过程 顺序表的动态存储 顺序表初始化 尾插 扩容 头插 更改后的尾插 尾删 头删 打印 释放内存 优化顺序表 (任意位置插入删除) 优化后的头插尾插 优化后的头删尾…...

请你说说json 序列化功能

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。JSON基于JavaScript编程语言&#xff0c;是一种文本格式&#xff0c;完全独立于语言。 JSON序列化是将复杂的对象结构…...

Wireshark流量分析

目录 1.基本介绍 2.基本使用 1&#xff09;数据包筛选: 2&#xff09;筛选ip&#xff1a; 3&#xff09;数据包还原 4&#xff09;数据提取 3.wireshark实例 1.基本介绍 在CTF比赛中&#xff0c;对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供一个包含…...

spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

补充&#xff1a; 想看具体详情的可以看我的github链接&#xff1a;codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17&#xff0c;所以用上了spring boot 3.0.2了。 踩坑无数&#xff0c;一堆无用文…...

大数据和人工智能之间如何的相互促进

文章目录 大数据为人工智能提供支持人工智能加速大数据的分析和应用紧密联系和合作方式综合效应&#xff1a;智能化决策和创新结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&…...

基于互联网会计信息系统的内部控制

内部控制是指企业为保护资产安全、保证会计记录的正确性和可靠性、提高经 营管理效率、保障经营管理政策的执行而采取的全部方法和措施。内部控制可分为 一般控制和应用控制两类。一般控制是对会计信息系统环境的控制&#xff0c;应用控制则是 对系统运行过程的控制。显然&a…...

网络编程——套接字和字节序

目录 一、BSD套接字接口1.1 套接字类型1.2 套接字的位置 二、字节序2.1 大小端2.2 大小端判断2.3 主机字节序和网络字节序2.4 字节序转换函数 一、BSD套接字接口 BSD套接字接口是BSD的进程间通信的方式&#xff0c;它不仅支持各种形式的网络应用而且它还是一种进程间通信的机制…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...