自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 qt 如何添加子项目

创建好后回到 qt,进入 .pro 文件。(创建 .pri 文件, 这个 .h .c 文件是我后来创建的不用管)首先我们正常流程创建一个项目文件: 这是我已经创建好的,请无视红线。然后右击创建好的文件夹 添加 c++ 类就好了。

2024-07-06 15:35:40 125

原创 qt开发-15_QFile

用 open()打开文件,用 close()关闭文件,用 flush()刷新文件。QFile::open()函数打开文件时需要传递 QIODevice::OpenModeFlag 枚举类型的参数,决定。Windows 的路径是'\',我们就可以在写入的文件路径里添加这个'\'。可以使用 pos()获取当前文件位置,也可以使用 seek()可以使用 exists()检查文件是否存在,并使用 remove()删除文件。QIODevice::Truncate:以截取方式打开文件,文件原有的内容全部被删除。

2024-06-26 15:45:36 370

原创 qt开发-14_QListwidget 仿qq好友列表制作

首先创建好项目打开,ui 界面,添加好资源文件,然后打开 ui 界面。但是双击 listwidget 我们只能添加文字信息,不能添加其他的图片。创建完了之后我们就会跳转到这个类的 ui 界面,我们要在 这个 ui 类里面设计好好友头像和名字信息、在线状态的显示。就是这样,然后重复添加一些项目,改一下 listwidget 的样式表 和 focuspolicy 就好了。可以看到这个项比较小,需要我们给他改大一点,进入 ui 界面, 改变 listwidget 的样式表。选择 widget 名字自己取就好了。

2024-06-25 14:48:31 316

原创 qt开发-13_QTabWidget

QTabWidget 继承 QWidget,QTabWidget 类提供了一组选项卡(多页面)小部件。dget 主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很。然后我们选中这两个东西,构建一个水平布局,调整一下 listwidget 的最大宽度。方便的为用户显示更多的信息。类似浏览器的多标签页面,所以这个控件在实际项目中也会经。把这个调成 nofocus,可以消除初始选中的蓝色边框。就比如浏览器上方开的多个页面,点击就能切换。这个可以按钮可以在标签页加上一个 ×。

2024-06-24 11:32:29 246

原创 qt开发-12_QScrollArea

在 Qt 中,是用于显示可以滚动内容的控件,通常用于处理视图中内容超出可见区域的情况。它提供了一种在有限的视窗内显示大量内容的解决方案,如显示大图像、长文本、多个小部件等。

2024-06-24 10:11:07 358

原创 qt开发-11_Dialog 仿苹果支付界面

然后添加一个 frame 布局,调整为400 200, 坐标 0 0。通过定制对话框中的控件和布局,开发者可以构建出符合具体需求的对话框,从而提升用户体验和应用程序的功能性。对话框是一种特殊类型的窗口,通常用于短暂的交互和信息交换,如接收用户输入、显示消息、询问用户决定等。在生活中,我们扫码支付时,一扫这个码,他就是弹出这个支付界面,要你输入密码。这次我们再创建项目的时候略有不同,我们不要选 QWidget , 我们要选择 QDialog。调整高度为 30, 添加显示文本为 请输入支付密码。

2024-06-23 11:35:12 490

原创 qt开发-10_LineEdit

我们再拉出一个 widget,与 按钮 和 lineedit 组成垂直布局,我们把 widget 调成最大高度为2 把他的颜色调成灰色。给按钮去除文字,然后导入图片,图片的添加就不再说了。并且图片与输入框都有边框,太割裂了,我们把 lineedit 的边框给去掉。两个水平弹簧建立完成后我们选中登录的布局组合成水平布局,然后在垂直方向上添加三个弹簧,再使用存执布局。创建好项目后,进入 ui 界面,在左边的控件我们找到 lineedit ,我们拿出两个做一个登录界面。改变他的大小为正方形,以便于放图片。

2024-06-23 10:09:25 166

原创 qt开发-09_分裂器

是 Qt 框架中的一个非常实用的控件,用于创建可调整大小的窗格。它允许用户通过拖动子窗口间的边界(也称为分割条)来动态调整子窗口的尺寸。这在开发需要多个视图同时显示,且用户需要根据需要调整每个视图大小的应用程序时非常有用。我们可以将这两个其中的一个给他完全拉消失。我们可以设置 widget 子类的最小值,让他不能被拉为 0。没错我们就可以通过拉动中间的分离栏来调节两个区块的大小,这是很常见的。给取消勾选后,这个可调节的栏就会在我们拉动后松手时生效。还有一个垂直分裂器与这个效果一样,就不多说了。

2024-06-22 11:54:56 205

原创 qt开发-08_layout 布局

Qt 提供了非常丰富的布局类,基本布局管理类包括:QBoxLayout、QGridLayout、QFormL。取从它的父布局或从 parentWidget()中所获得的空间,将其分成一列框,并使每个托管小部件填。mLayout 是一个方便的布局类,它以两列的形式布局其子类。件也是会随着窗口拉伸而发生变化的,所以也是需要设置组件之间的比例系数的,与 QBoxLay。将其分为行和列,并将其管理的每个小部件放入正确的单元格中。倒数第二个表示的是控件与控件的大小比例,这里改成是 1:1:2:4后的效果。

2024-06-22 11:05:52 894

原创 qt开发-07_radioButton

QRadioButton 是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一。普通的按钮也可以组成这种关系。同样把多个按钮拉到一个组里面,然后勾选互斥即可。QRadioButton 部件提供了一个带有文本标签的单选框(单选按钮)。默认在同一个父对象下,初始化后点击它们是互斥状态。radioButton 可以直接当作开关使用。你可以选中多个按钮组成按钮组,组成互斥关系。

2024-06-20 20:27:13 151

原创 qt开发-06_checkbox

QCheckBox 继承 QAbstractButton。复选按钮(复选框)与 RadioButton 的区别是选择模式,勾选以后可以 有: 选中、半选、未选三种状态;互斥的话就只能选中一个,选中多个就不可以了。单选按钮提供多选一,复选按钮提供多选多。添加到按钮组以后可以选中他们是否互斥。

2024-06-20 19:54:28 134

原创 qt开发-05_QPushButton

这是在qss文件中写的,记得在main.cpp中添加文件调用。这个 hover 表示鼠标悬停在按钮上的时候调用图片,checked 表示按下后的效果。这里表示的将图片应用到按钮上,图片需要自己添加资源文件来添加。这里有很多类的槽方法。都是源于他继承的父类。在qt中新建一个项目,并且打开ui界面添加一个按钮;在这里添加点击后的效果。还有很多函数就不一一展示了。选择这个复制文件的路径,粘贴就可以了。按钮是最常用的控件;

2024-06-19 10:50:08 384

原创 qt开发-04_qss

QSS (Qt Style Sheets) 文件在Qt开发中的作用类似于Web开发中的CSS (Cascading Style Sheets)。QSS用于定义Qt应用程序中的用户界面元素的样式,使开发者能够轻松地修改和美化应用程序的视觉表现,而不需要修改程序的源代码。这种分离的设计使得用户界面设计和功能实现可以更加独立地进行,便于团队合作和项目管理。

2024-06-19 09:47:07 216

原创 qt开发-03——信号与槽

信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的。其中,sender 是发射信号的对象的名称,signal() 是信号名称。SIGNAL 和 SLOT 是 Qt 的宏,用于指明信号和槽,并将它们的参数转换为相应的字符。槽就是一个函数,与一般的 C++函数是一样的,可以。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数。

2024-06-17 21:24:00 474

原创 qt开发-02详细介绍

把目录改成索引后就可以直接搜,点进去就能看到了,他是继承与 QMainWindow ,更进一步就去看QMainWindow.

2024-06-16 20:45:02 679

原创 qt界面开发-01我的第一个qt程序

这个选择 Application(qt) 就可以创建一个 qt项目,中间第一个表示创建一个带ui界面的qt项目,就是在创建后可以通过ui编辑界面。简单的来说,Qt 可以做很多东西,好比如 Windows 下的软件也有很多是 Qt 开发的,这里。Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

2024-06-16 20:07:53 318

原创 liunx驱动开发-9_内核定时器

假如 HZ 为最大值 1000 的时候,32 位的 jiffies 只需要 49.7 天就发生了绕回,对于 64 位的 jiffies 来说大概需要5.8 亿年才能绕回,因此 jiffies_64 的绕回忽略不计。初始化定时器,设置定时器的定时处理函数为 timer_func,另外设置要传递给 timer_func 函数的参数为 timerdev的地址。jiffies_64 和 jiffies 其实是同一个东西,jiffies_64 用于 64 位系统,而 jiffies 用于 32 位系统。

2024-05-13 17:06:27 462

原创 linux驱动开发-8_按键

通过 gpio_get_value 来读取按键的值,若是为 0 就表示按下了,为 1 为未按下。当按键松开后,将结构体中的原子变量改为 key0 表示按下,反之则为 key1 这里 key0 与 key1 的值无意义,知识一个代表而已。这只是最基础的按键读取,练最基础消抖都没做,当然我们也只是学习一下驱动开发流程,按键处理已经在 stm32 中做过太多了,现在最主要的还是学习驱动开发思路。获取节点中的按键设备的信息,将gpio设为输入。经典的字符设备初始化。在设备树上添加好信息。

2024-05-12 20:24:23 242

原创 linux驱动开发-7_并发与竞争_原子操作

在自旋锁锁上了之后,中断是可以打断的,比如某一进程正在运行,自旋锁已经锁上了,然后中断又来了,中断又开了一个锁。int atomic_sub_and_test(int i, atomic_t *v) 从 v 减 i,如果结果为 0 就返回真,否则返回假。int atomic_dec_and_test(atomic_t *v) 从 v 减 1,如果结果为 0 就返回真,否则返回假。int atomic_inc_and_test(atomic_t *v) 给 v 加 1,如果结果为 0 就返回真,否则返回假。

2024-05-08 19:40:44 760 1

原创 linux驱动开发(imx6ull)-6_蜂鸣器

注意 定义完着个 io 后你要看别的 io 有没有复用这个口,如果有那是用时就会失败,因为端口被别的设备复用了,我们写的这个就会使用不成功。第四个 0x5 是 mux_reg 寄存器的值,也就是设置在 mux_reg 寄存器里面的值为 0x05 查数据手册能知道这是复用该端口作为 gpio 口。跟在 MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 后面的 0x10b0 就是电器属性的值 就是 conf_reg 的值。首先,我们要在设备树上添加设备信息。然后就是编写设备了。

2024-05-07 20:37:38 197

原创 linux驱动开发(imx6ull)-5_pinctrl系统与gpio子系统

pinctrl 子系统重点是设置 PIN(有的 SOC 叫做 PAD)的复用和电气属性,如果 pinctrl 子系统将一个 PIN 复用为 GPIO 的话,那么接下来就要用到 gpio 子系统了。gpio 子系统的主要目的就是方便驱动开发者使用 gpio,驱动开发者在设备树中添加 gpio 相关信息,然后就可以在驱动程序中使用 gpio 子系统提供的 API函数来操作 GPIO,Linux 内核向驱动开发者屏蔽掉了 GPIO 的设置过程,极大的方便了驱动开发者使用 GPIO。编译下载到板子上就能使用了。

2024-05-06 20:30:01 703

原创 linux驱动开发-4_设备树led驱动

通过 cdev_init 函数把 dtsled 结构体中的字符设备信息初始化,把能够操作的函数给到 dtsled 结构体,并通过 cdev_add 函数注册字符设备。若注册失败,就要释放掉之前注册成功过的设备号。通过 class_create 函数来创建类,若是创建失败,就要注销创建的字符设备。若是自己给定了设备号就通过 register_chrdev_region 来注册。通过 device_create 函数来创建设备 若是失败了就摧毁创建的类。接着就可以通过 of 函数来获取设备树中的设备信息。

2024-05-03 20:58:21 275 1

原创 linux驱动开发-3_设备树

设备树(Device Tree)是一种描述硬件设备信息和配置的数据结构,通常用于嵌入式系统中,特别是用于描述复杂的硬件平台结构,如ARM架构的系统。返回值:0,读取成功,负值,读取失败,-EINVAL 表示属性不存在,-ENODATA 表示没。返回值:0,读取成功,负值,读取失败,-EINVAL 表示属性不存在,-ENODATA 表示没。取设备树中的节点或者属性信息,这一系列的函数都有一个统一的前缀“of_”,所以在很多资。设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,

2024-05-03 17:00:02 886 1

原创 linux驱动开发-2_点灯

在 led_init 里面要进行 led 驱动的设备号、设备名和设备结构体构建,使用 register_chrdev() 函数来注册,在这个 led_fops 设备结构体中写好调用的函数。IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 的地址为 0X020E0068。的处理器来说,虚拟地址范围是 2^32=4GB,我们的开发板上有 512MB 的 DDR3,这 512MB 的。MT_DEVICE_CACHED 和 MT_DEVICE_WC,ioremap 函数选择 MT_DEVICE。

2024-04-26 16:58:31 845 1

原创 linux驱动开发-1 我的第一个驱动程序

file_operations 的结构体是 Linux 内核驱动操作函数集合,在做linux驱动时,要构建此结构体,要在其中构造好函数与放在该结构体之外的函数做好联系才能够调用函数。驱动编译完成以后扩展名为.ko,使用modprobe命令可以加载驱动模块是最简单的模块加载命令,此命令用于加载指定的.ko 模块。般字符设备的注册在驱动模块的入口函数 xxx_init 中进行,字符设备的注销在驱动模块。模块有加载和卸载两种操作,我们在编写驱动的时候需要注册这两种操作函数,模块的加载和。//注册模块卸载函数。

2024-04-22 11:21:34 264

原创 第十四届蓝桥杯嵌入式省赛

详细代码放在github里自行下载。

2024-01-18 19:18:34 1440 1

原创 蓝桥杯第十三届嵌入式省赛1(github源码 + 使用STM32CubeMX)

系统频率是170M = 170 000 000,我要1000HZ频率的方波就除以1000.结果为170 000 然后分频系数填170,170 000 / 170 = 1 000这两个数就是这么来的。查看原理图可知,该led模块由PD2所控制,当PD2为高电平时,led模块才能够启用,在这个时候输入是有效的;需要注意的是在操作led时要先写好端口的值,然后操控开关PD2,这一步骤必须连续,否则回合lcd显示屏模块冲突,因为他们都是用的pc口。按键端口选择输入模式,按键按下是读取会是低电平,上拉输入最好。

2023-12-20 17:11:55 677

原创 esp8266模块--MQTT协议连接服务器实现数据接收和发送+源码

首先推荐中国移动的代码,我觉得中国移动的代码更为合理:(但是有一些其他的模块在里面)以及这位b站up做的视频:(wifi模块在p9节)推荐跟着这位up一起c+v。但是没有讲解原理,只追求做出来的可以看看。esp8266是一款wifi无线通讯模块,该模块能够通过wifi来与其他设备通信。我们要做的就是通过串口来发送指令、接收指令,其他的都是由模块自身来处理的。我所用的是这块新大陆的wifi模块,就是由普通的esp8266集成的,用法没什么区别。串口与stm32单片机的串口对接就行,rx-tx交叉接线。

2023-07-11 10:52:08 6145 4

空空如也

空空如也

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

TA关注的人

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