自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 收藏
  • 关注

原创 解决SQLyog连接不上mysql的问题(按照步骤,包解决)

备注:如果没有修改过数据库的密码,建议修改一下。1. 我这里的root的host修改过,如果你的root的host不是%,那么输入 `update user set host=’%’ where user=’root’;`进行修改,(如果这里输进去的命令不对,将单引号修改为输入)

2024-03-14 15:40:49 1250

原创 【QT】解决Ubuntu20.04下QT5.12.0连接mysql8.0失败问题。【特详细,解决不了来找我】

1. 修改一些文件配置(当然你也可以使用Vim编辑文件)2. 在mysql.pro中注释掉这句话 `#QMAKE_USE += mysql`3. 在mysql.pro文件中添加如下配置:

2024-03-14 15:30:13 770

原创 【QT】UDP通信/广播/多播应用

例如前面在UDP中, 我们发送信息都是指定发送的内容,对方的IP地址和对方的端口号,相当于给一个人发信息。广播的意义在于给好多人发消息。例如服务器要进行组播,组播的话要进行设置组播段号,同时还需要要自身绑定更改。

2024-03-14 15:14:06 566

原创 【QT】TCP简易聊天框

如果客户端发起连接并且成功,服务端将会收到一个信号。在Qt中,服务端不再是由accept()来确定连接的建立,

2024-03-14 15:09:24 1286 2

原创 【QT】文件流操作(QTextStream/QDataStream)

文本流/数据流(二级制格式)操作的都是基础数据类型:int float string//Image Qpoint QRect就不可以操作需要下面的不同的主机进行数据传传输,使用的就是数据流。文件流操作基本和QFile相同。

2024-03-12 15:50:51 1516

原创 【QT】文件操作(QFile)和 文件的属性(QFileInfo)

### 默认打开的是utf8文件。bool isOk = file.open(QFile::ReadOnly);### 打开其他类型的乱码怎么办?使用下面的方式,强制从utf8转gbk

2024-03-12 15:46:25 768

原创 【Qt】四种绘图设备详细使用

- QPixmap无法提供像素级别的操作———使用底层平台的绘制系统进行绘制- QImage提供了像素级别的操作———使用独立于硬件的绘制系统,实际上是自己绘制自己,并且能够在不同系统之上提供一个一致的显示形式。

2024-03-08 15:29:35 1374 1

原创 【QT】绘画事件/刷新界面

上面的示意图告诉我们,Qt的绘图系统实际上是,使用QPainter在QPainterDevice上进行绘制,它们之间使用QPaintEngine进行通讯(也就是翻译QPainter的指令)。从Object派生类,均可以用内存回收机制如果想要在当前窗口中画图,我们需要重载一个虚函数。用样式表来让背景图随着窗口缩放Rect表示不带小数点RectF表示可以带小数点。

2024-03-08 11:56:00 956

原创 【QT】事件分发器/事件过滤器/事件处理的介绍和使用

事件分发器:返回值 bool如果返回时true,代表用户要处理事件,不再分发事件了。- 事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。- event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理(eventhandler)。因此如上所述,**event()函数主要用于事件的分发**。所以,如果你希望在事件分发之前做一些操作,就可以重写这个event()函数了。

2024-03-07 11:54:31 1581

原创 【QT】定时器事件应用

可以很清楚的看到两个定时器在同时计时,因为在通过一个label中,所以相互覆盖。如果想要使用两个定时器,则需要在使用两个label,并且在创建一个类。由于争抢同一个函数,因此会导致第一个定时器的显示被覆盖掉。记录在窗口中停留的事件。

2024-03-07 11:50:36 571

原创 【QT】鼠标事件<QMouseEvent>

功能单一的事件,鼠标进来是一个事件,鼠标出去是另外一个事件。QT提供了很多的事件函数,我们通过重写这些事件函数就可以实现我们想要的效果。写一个子类,继承QLabel,那我们就可以重写事件。使用label标签,使得label继承mylabel。

2024-03-07 11:47:45 677

原创 【QT】自定义控件的示例

把全局包含也选了。然后进入将自定义控件类添加到提成窗口部件中.

2024-03-06 14:00:05 540

原创 【QT】控件的用法介绍

QPixmap在Qt中代表的就是一张图片QPicture不是图片如果图片不能完整显示,那就是没有布局。

2024-03-06 13:56:08 721

原创 【QT】布局介绍

将用户密码放入到同一个widget。选中,点击网格布局。最后结果——页面中的内容和随页面的缩小和方法自适应。将对应的按钮,label放入到widget中。水平布局和垂直布局只能针对一行一列。使用弹簧来对他们布局。

2024-03-06 13:50:07 511

原创 【QT】QDialog/ QMessageBox/提示对话框/颜色(文字)------对话框

模态对话框是阻塞对话框非阻塞对话框给该对话框new一个空间,只有程序整个关闭时才会被析构使用QT,只需要记住常用的信号,和常用的常函数。根据要设计功能去找那个常方法适合,然后直接拿到代码里来试,试过就知道了。

2024-03-06 09:01:30 1335

原创 【QT】菜单栏/工具栏/状态栏的应用

工具栏(QToolBar)—可有多个(可移动—movable)

2024-03-06 08:50:32 548

原创 【QT】QMainWindow介绍

Label:可以放静态/动态图片/链接Qdialog在创建文件时,路径一定不能有中文,否则会报错。

2024-03-06 08:41:05 555

原创 【QT】重载的信号槽/槽函数做lambda表达式

当第一个信号发出时,第二个信号被发出。除此之外,这种信号-信号的形式和信号-槽的形式没有什么区别。注意这里还是使用connect函数,只是信号的接收者和槽函数换成另一个信号的发送者和信号函数。

2024-03-05 16:41:15 839

原创 【QT】添加信号槽机制

需求:按下b1按钮,b2的值发生改变自定义槽函数槽函数可以是任意的类成员函数,全局函数,静态函数,lambda表达式(隐式函数,没函数名)槽函数需要与信号对应(返回值,参数)信号没有返回值,槽函数返回值:void槽函数的参数是为了接收信号传过来的数据槽函数的参数应该是不能够大于信号的参数个数,可以少于信号的参数个数槽函数可以重载调用//如果给b2自定义槽函数,需要再创建一个类来继承QPushButton,因此很麻烦。//因此采用通过b2的父类MyWidget设置b2的值。

2024-03-05 16:37:46 1095

原创 【QT】窗口的大小标题图标设置

子类中没有的功能,父类中翻,就能翻出来。

2024-03-05 16:30:52 747

原创 【QT】在窗口中添加按钮

窗口创建出来,默认不显示

2024-03-05 16:27:53 787

原创 【QT】创建第一个QT程序

qt程序用到的模块#兼容以前的版本,5.0以上可以不用加,如果是5.0以下没有Qwidget#生成的应用程序的名字#指定生成的makefile的类型lib# 源文件 \换行就加\main.cpp \mywidget.h。

2024-03-05 16:22:33 1310

原创 【QT】QT帮助文档使用/命名规范

C+的一个框架-一款图形界面应用程序框架(GU1库)①.包含500多个类,9000多个函数,并且被分成了多个模块②.在C++基础上有了更高级的接口和机制(更好用)主要应用于桌面应用程序的开发。注意:创建路径不能有中文。工具:qtcreator优势:1.跨平台,几乎支持所有的平台。(一次编码,随处编译)2.接口简单,容易上手3.开发效率高,能够快速构建应用程序。4.很好的社区氛围,市场份额逐年上升。5.可以进行。智能家居就是使用QT来做的。(跨平台)

2024-03-05 16:18:30 1135

原创 【二叉树搜索树/二叉排序树】BST树的创建,插入,找最小结点的下一个节点/找最大结点的前驱

**二叉树搜索树**:【二叉排序树】1. 每个结点都有一个作为搜索一句的关键码,所有的结点的关键码给互不相同2. 左子树(如果存在)所有结点的关键码都小于根结点的关键码3. 右子树(如果存在)所有结点的关键码都大于根节点的关键码4. 左子树和右子树也都是二叉搜索树。

2024-01-31 09:20:21 400

原创 【数据结构】(分治策略)中位数的查询和最接近点对问题

寻找一组字符串中第k小的数,返回其值和下标。不可以有重复值(在缩小规模的时候,会导致程序死循环)相对位置的转换体现了分治策略的思想。1.将待查询数组进行划分,得到num[left] 此时的下标 i(该值的下标将不会在变化)2.i-left+1计算出i的相对位置j;3.如果待查的k小于等于j,则从i的左边查,如果大于,从i的右边查。(说明i之前的下标都没有,则待查的k也减去相应j)4.当只剩下一个元素,并且k等于1.返回当前值。

2024-01-31 09:15:11 807

原创 【数据结构】分治策略

1. 该问题的规模小到一定程度就容易解决。2. 把大问题分解成小问题,是将问题的规模变小,而不是将问题变小3. 使用小规模的解,可以合并,该问题原规模的解 4. 该问题所分解的各个子模块是相互独立的。

2024-01-31 09:11:03 1137

原创 【数据结构】快速排序,基数排序/桶排序

桶排序:低位优先,所有数据从(个位)开始依次放入10个桶内(入队,再从桶里取出,直到完全有序)。基数(桶)排序:低位优先,所有数据从低(个)位开始,依次放到对应的桶内(入队),再接着从桶内取出(出队),直到完全有序 时间复杂度O(dn) 空间复杂度O(n) 稳定吗如下图::获取最大值的位数,来作为循环遍历位数的条件:进行将所有数据,按照位数放入桶中,放完之后,再取出来放到arr数组中:获取当前位数所在桶的序号。index获取。

2024-01-31 09:07:42 799

原创 【哈希】哈希表|除留取余法|哈希冲突(拉链法interv)|一致性哈希|虚拟节点

广义上是一种思想,不是一个特定的东西,只要算法设计中使用到了哈希思想,就可以叫做哈希函数。存储地址 = f(关键字)可以直接通过关键字而不是去一次比较,直接获取存储地址。散列技术,其实是将存储位置和关键字之间确立了一种对应关系f,使得每一个关键字(key)都对应一个存储位置。查找的时候通过确定的对应关系,找key值的映射f(key)。这种对应关系f就是散列函数(哈希函数),采用散列技术将记录存在一片连续的存储空间,这个空间就被称为哈希表。

2024-01-31 09:03:57 1181

原创 【郑益慧】模拟电子技术:8.结型场效应管特性和参数

结型场效应管的输入电阻(Rds)没有绝缘栅型高。(N沟道)P沟道就是相反的,Ugs不能小于0,目的都是为了不让PN结导通。好处:不容易坏。绝缘栅的容易损坏,因为那层二氧化硅特别薄,所以特别小的感应电流都可以击穿它。有一点点电荷都可以形成较高电压,形成电场,将其击穿。因此两者不存在谁替代谁。

2024-01-30 16:15:40 1681

原创 【郑益慧】模拟电子技术:7.Mos管的工作原理

Mos管的出现,几乎不怎么耗电。因此在集成电路中起了非常大的作用在某些方面确实比晶体三极管强。基本原理:依靠电场效应来控制。电场效应几乎是没有电流的,没有电流几乎是没有功率的。从控制上来说,消耗的功率特别小。输入电阻非常高。场效应管不和三极管一样,有双极,受温度影响大。它只有多子的存在,因此受温度影响小。

2024-01-30 11:37:15 491

原创 【郑益慧】模拟电子技术:6.BJT特性曲线共射

首先要明确输入特性曲线描述的是UBE和IB的关系,基极电流b是由发射极扩散到基极的电子与空穴复合形成的。然后你要想UCE的作用是把发射极的电子吸到集电极去(>0的话是反向电压,才有这个作用),那UCE越大,抢的电子越多,基极和空穴复合的电子应该就越少,也就是越小,回看输入特性曲线,同一个UBE的情况下,UCE越大,IB越小,符合这一点。到最后UCE大于V的时候,能把绝大部分的电子都弄走了,极少部分还是在基极与空穴复合,形成IB,UCE再大你晶体管内半导体掺杂浓度就那样,电子都是有限的,所以就重合为一条曲

2024-01-25 11:32:18 1390

原创 【郑益慧】模拟电子技术:5.双极晶体管的结构与方法原理

如果还不明白,为什么成比例:那我重新说一遍,因为基区的空穴基本上都是IB提供的,所以当基区自己的空穴没了以后(通过扩散或者复合),此时基区空穴产生的速度由IB决定,那么IB就和IC成比例了。在扩散的速度是不变的条件下,复合的比例是固定的,要让自由电子快速经过基区到达集电区以后,快速被移走,否则会聚集;自由电子到基区了,基区本来自由电子是少子,但是扩散的非平衡少子比它原来的多子还要多。发射区的自由电子向基区扩散,基区中的多子(扩散)向发射区扩散。(发射区的掺杂浓度远远大于基区),产生的电流。

2024-01-24 16:26:40 1003

原创 【江科大】STM32:软件/硬件读写MPU6050(代码)

有SCL和SDA本来需要外挂上拉电阻,但是由于STM32内部内置了,就不需要了。由于模块内部内置了下拉电阻,所以引脚悬空就相当于是接地。SCL低电平:写入数据SCL高电平:保证数据稳定高位先行,所以变换数据的时候先放最高位起始位后,SCL和SDA均进入低电平发送一个字节,即SCL低电平,写入第一个字节写完一位,释放SCL,将SDA拉下来,

2024-01-24 10:17:25 2029

原创 【江科大】STM32:MPU6050介绍

MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度(加速度计具有静态稳定),不具有动态稳定性。)如一个车在斜坡上,椅子和靠背都受到了力的作用,但是车是水平向前的,因此当物体运动,使用加速度计来测量,测出来的角度就会不准确。3 轴陀螺仪传感器具有动态稳定性,不具有静态稳定性。

2024-01-24 09:54:51 3323

原创 【江科大】STM32:I2C通信外设(硬件)

在将2C通信外设之前,我们先捋一捋,串口的相关特点来和2C进行一个对北比。首先:1,大部分单片机,设计的PCB板均带有串口通信的引脚(也就是通信基本都借助硬件收发器来实现)2.对于串口的异步时序,软件实现起来就异常麻烦。硬件实现非常简单。所以串口的实现基本就全倒向了硬件。右边的图片中的串口时序就可以看出来软件模拟的复杂性其次:2C是同步时序,软件实现简单灵活,(在前面讲过的2C时序,明显就简单的多)硬件实现,相比之下,去并不能让人完全省心。

2024-01-24 09:33:44 750

原创 【江科大】STM32:I2C时序/数据帧

发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次即可发送一个字节.SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答

2024-01-24 09:06:03 1249

原创 【江科大】STM32:I2C通信(上)

如果要通过寄存器控制硬件电路,至少需要定义两个字节数据1.一个字节是我们要读写哪个寄存器,也就是指定寄存器地址。2.这个地址下,存储器存的内容(写入内容就是控制电路,读取内容就是获取电路的状态)单片机读取自己的寄存器,可以通过内部的数据总线来完成,直接用指针操作模块中的寄存器在单片机的外面,因此就需要通信协议,连接尽可能少的线,实现单片机读写外部模块寄存器的功能。

2024-01-23 10:44:41 646

原创 【江科大】STM32:串口HEX/文本数据接收和发送(代码部分)(下)

串口下载的过程:Bootloader接收usart1的数据,刷新程序存储器。这时主程序处于瘫痪状态,主程序更新完成再启动主程序,执行新程序。而Bootloader在更新系统存储器时需要切换到boot1,而更新完成运行更新后的主闪存存储器需要切换到Boot0。而由于sysclk的第四个上升沿,Boot引脚会被锁定,因此每次都需要复位。原理是实现程序的自我更新,即利用bootloader(程序代码),更新程序存储器。程序加载到bootloader完成后,再将跳线帽换到boot0,按复位键。

2024-01-23 10:29:25 1646

原创 【江科大】STM32:USART串口(理论部分)上

通用同步/异步收发器。USART:是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。自带波特率发生器,最高达4.5 bits/s(其实就是分频器,得到想要想要波特率)(9600)可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2):决定帧的间隔。可选校验位(无校验/奇校验/偶校验支持同步模式、硬件流控制:控制当V发送>V接收,导致数据覆盖。

2024-01-23 09:55:55 1209

原创 【江科大】STM32:DMA转运

直接存储器存取(协助CPU完成数据转运,可以直接访问32位内部存储器,内存SRAM,程序存储器Flash,寄存器等)DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道: DMA1(7个通道(C8T6只有这个)), DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发(如存储器-》存储器如SRAM-》Flash)硬件触发:外设-》存储器如ADC的数据,只有转换完成,触发DMA,DMA才完成一次转运。

2024-01-23 09:33:33 792

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除