自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 之模板

模板特化(Template Specialization)是 C++ 中模板的一个概念,它允许针对特定的数据类型或特定的模板参数提供定制化的实现。在C++ 中,模板(Template)是一种通用的编程工具,允许程序员编写泛型代码,使得类或函数能够适用于多种不同的数据类型,而不需要编写相似的代码。模板提供了一种在编写代码时更具通用性的方法,能够处理不同类型的数据而无需为每种类型编写特定的函数或类。完全特化是对模板中的所有模板参数进行特化的情况。在完全特化中,模板参数被指定的类型,为特定的类型提供独特的实现。

2024-05-09 23:07:35 334

原创 qt QComboBox

提供了一系列方法来添加、删除和修改列表中的项,支持通过索引或文本检索项,并可以通过信号和槽机制来响应用户的选择变化。它允许用户从一组选项中选择一个选项,并可以配置可编辑,使用户能够在其中输入文本。该控件广泛应用于需要从多个选项中进行选择的用户界面场景,例如表单和设置界面。是Qt框架中用于创建下拉列表的一个控件。

2024-05-06 22:28:22 238

原创 qt 记事本保存和关闭功能

【代码】qt 记事本保存和关闭功能。

2024-05-05 16:43:53 79

原创 qt 记事本打开功能

【代码】qt 记事本打开功能。

2024-05-05 16:08:07 106

原创 qt 文件选择对话框 QFileDialog

通过调用 exec() 方法显示对话框,并在用户作出选择后执行相应的操作。如果需要,可以设置文件类型过滤器,以限制用户可以选择的文件类型。首先,创建一个 QFileDialog 对象的实例。根据需要设置对话框的模式,如打开文件、保存文件等。

2024-05-05 15:52:21 220

原创 QTextStream

是一个功能强大的类,用于处理文本数据,特别是在需要考虑字符编码和文本格式的情况下。通过这个特性,它提供了一种灵活而强大的方式来读写和操作文本。

2024-05-04 14:37:36 146

原创 qt 文件操作类QFile

是Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能,并且支持文本和二进制文件。,因此它可以像其他IO设备一样使用。

2024-05-04 13:38:19 246

原创 qt自定义信号与槽

在Qt中,自定义信号与槽是实现对象间通信的一种机制。信号和槽是是Qt对象通信的核心特性,使得一个对象能够在发生某种事件时通知其他对象。定义信号:在Qt中,信号是由signals关键字声明的类成员函数。他们不需要实现,只需要声明即可:在上面的例子中,有两个信号,一个有参的,一个无参的。定义槽:槽可以是任何普通的成员函数,但通常在类定义中用slots关键字标识。槽可以有返回类型,也可以接受参数,但它们的参数类型需要与发出信号的参数类型匹配。

2024-05-03 16:31:33 254

原创 按键QPushButton设置信号与槽的四种方式

是最通用的方式,而使用Lambda表达式可以在同一位置编写信号处理逻辑,提高代码的可读性。使用函数指针的方式则在编译时提供更好的类型检查。在使用Qt Designer时,可以通过命名约定自动连接信号和槽。当UI文件加载时,以on__ 命名的槽会自动连接到相应的信号。这种方式可以直接在连接点使用匿名函数,使代码更加简洁。Qt 5中引入,允许使用函数指针直接连接信号和槽,这种方式类型安全,且可以利用IDE的代码补全和错误检查。最常用的方式,直接通过QObject::connect 函数连接信号和槽。

2024-05-03 14:08:10 344

原创 qt信号与槽基本认识

当pushButton 发出 clicked (点击信号),就会调用close() ,作用与接受者,也就是把widget关闭掉。在Qt中信号与槽是一种非常强大的事件通信机制。界面上已经按键,如何用按键按下之后有反应呢?

2024-05-03 13:16:32 97

原创 QT记事本项目完成初步布局

新增文本编辑器,底部显示行列和字符编码。

2024-04-25 22:22:48 126

原创 QT记事本项目按键组布局

实现打开、保存、关闭按键, 底部背景颜色。

2024-04-25 21:56:14 135

原创 QT工程介绍

还是Widget在Qt中,创建MainWindow和Widget项目的主要区别在于他们的用途和功能范围MainWindow:这是一个包含完整菜单栏、工具栏和状态栏的主窗口应用程序框架。它适合于更复杂的应用程序,需要这些额外的用户界面元素来提供丰富的功能和交互。Widget:这通常是一个简单的窗口,没有内置的菜单栏、工具栏或状态栏。它适合于更简单或专用的应用程序,不需要复杂的用户界面组件。简而言之,选择"MainWindow"或"Widget"取决于你的应用程序需要多少内置的用户界面元素和复杂性。

2024-04-24 23:13:37 562

原创 C++ 之抽象类与接口

在C++中,虽然没有像其他编程语言(比如Java中的接口Interface)一样直接定义接口的关键字,但可以通过抽象类和纯虚函数的方式来实现接口的概念。接口通常用于定义类应该实现的方法,但不提供具体实现。这样的实现方式允许多个类共享相同的接口,同时让每个类根据需要去实现这些接口。通过以上的方式,可以在C++中模拟出类似接口的行为,允许多个类共享相同接口并提供各自的实现。在C++中抽象类就是定义了派生类应该具有的功能,但不完全实现这些功能。

2024-04-22 22:29:13 328 1

原创 C++ 之多态

多态按字面意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。)以他们自己的方式“开”,尽管调用的是相同的函数。这就是多态的优势(相同接口,不同的行为)。在这个例子中,不同的对象(

2024-04-22 21:51:36 216

原创 C++之虚继承

虚继承是C++中一种特殊的继承方式,主要用来解决多重继承中菱形继承问题。在菱形继承结构中,一个类继承来自两个具有共同基类的类时,会导致共同基类的成员在派生类中存在两份拷贝,这不仅会导致资源浪费,还可能引起数据不一致的问题。虚继承通过确保共同基类的单一实例存在于继承层次中,来解决这一问题。虚继承时C++语言中处理复杂继承关系的一种重要机制,但它也带来了一定的复杂性和性能考虑。正确地使用虚继承可以帮助你建立清晰、有效的类层次结构。类中只会有一份 Base 类的成员。的继承声明为虚继承(

2024-04-21 16:53:55 122

原创 C++ 之多重继承

在C++中,多重继承是一种允许一个类同时继承多个基类的特性。这意味着派生类可以继承多个基类的熟悉和方法。多重继承增加了语言的灵活性,但同时也引入了额外的复杂性,特别是多个基类具有相同的成员时。在多重继承中,派生类继承了所有基类的特性。这包括成员变量和成员函数。如果不同的基类有相同名称的成员,则必须明确指出引用的是哪个基类的成员。多重继承是C++的一个强大特性,但应谨慎使用。合理地应用多重继承可以使代码更加灵活和强大,但不当的使用可能导致设计上的问题和维护困难。因此,他可以使用这两个类中定义的方法。

2024-04-21 16:26:39 188

原创 C++ 之虚函数

关键字有助于清晰地表达程序员的意图,并利用编译器检查来避免常见的错误,如签名不匹配导致的非预期的函数重写。关键字用于支持多态。

2024-04-20 16:58:53 125

原创 c++ 之权限对继承的影响

派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。无论继承类型如何,基类的 private 成员始终不可直接在派生类中访问。

2024-04-20 16:28:35 282

原创 C++之继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。在C++中,继承可以是公有(public)、保护(protected)或私有(private)的,这决定了基类成员在派生类中的访问权限。

2024-04-20 15:57:51 193

原创 c++ 之静态成员

静态成员变量在C++中的一个典型应用时用于跟踪类的实例数量。这个案例体现了静态成员变量的特性:他们在类的所有实例之间共享,因此适合存储所有实例共有的信息。上面的例子中,为所有实例提供了一个共同的状态。这种技术在需要跟踪对象数量或实现某种形式的资源管理时特别有用。c++ 类中的静态成员是一个很重要的概念。它包括静态成员变量、静态成员函数。静态成员有以下特点。

2024-04-20 14:54:42 285

原创 c++ 之析构函数

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行,析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。

2024-04-20 11:25:44 332

原创 c++ 之this 指针和new关键字

在这个例子中,new 被用来分配一个 MyClass 类型的对象和一个整数数组,然后使用 delete 和 delete[] 来释放内存。**分配单个对象:**使用 new 可以在堆上动态分配一个对象。例如,new int 会分配一个 int 类型的空间,并返回一个指向该空间的指针。//C语言中,int *arr = (int *)malloc(sizeof(int)*10);//C语言中,int *p = (int *)malloc(sizeof(int));

2024-04-05 16:27:58 408

原创 c++构造函数之初始化列表

初始化列表 : a(x), b(y), c(z) 的意思是用 x 初始化 a,用 y 初始化 b,用 z 初始化 c。在C++中,使用初始化列表来初始化类的字段是一种高效的初始化方式,尤其在构造函数中。初始化列表直接在对象的构造过程中初始化成员变量,而不是先创建成员变量后再赋值。初始化列表紧跟在构造函数参数列表后面,以冒号(:)开始,后跟一个或多个初始化表达式,每个表达式通常用逗号分隔。使用初始化列表是C++中推荐的初始化类成员变量的方式,因为它提供了更好的性能和灵活性。

2024-04-05 16:10:33 173

原创 c++ 构造函数和拷贝构造

这是因为这三个功能通常都是用于管理动态分配的资源,比如在堆上分配的内存。每个对象有自己的内存副本,因此不会相互影响,避免了潜在的运行时错误。浅拷贝只复制对象的成员变量的值。如果成员变量是指针,则复制指针的值(即内存地址),而不是指针所指向的实际数据。在 C++ 中,深拷贝和浅拷贝是处理对象拷贝时的两种不同方法,尤其是在对象包含指针或动态分配的内存时。拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。深拷贝复制对象的成员变量的值以及指针所指向的实际数据。

2024-04-05 16:06:14 503

原创 c++之重载

运算符重载是C++中提高代码可读性和表达力的强大工具,但需要谨慎使用,以保证代码的清晰性和维护性。意思是在同一作用域内,可以声明几个功能类似的同名函数。同名不同参(参数的个数、类型或者顺序)必须不同。在c++中是建议程序员自定义各种运算符的。

2024-04-05 15:22:34 131

原创 c++ 之引用

引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。

2024-04-05 14:49:29 243

原创 c++之权限初步认识

public权限类似于c语言的结构体,此时不需要考虑访问权限的存在。区别在于:类中不写权限,默认是私有权限private私有权限,后面工作大量用到,和以下的例子中将有所体现。。。。。。protected受保护权限,更多在继承中体现。

2024-03-26 23:20:32 117

原创 设计模式之 has-a

在 C++中,一个类包含另一个类的对象称为组合(Composition)。这是一种常见的设计模式,用于表示一个类是由另一个类的对象组成的。这种关系通常表示一种"拥有"(“has-a”)的关系。

2024-01-31 23:23:00 149

原创 c++ 之类

这些对象可以拥有属性(即数据成员)和行为(即成员函数或方法)。类的概念是面向对象编程的核心之一,其主要目的是将数据和与数据相关的操作封装在一起。我们看一下成员函数的描述:真正的成员函数遵守封装特性,在函数体内部访问成员数据的时候,不需要参数传递。通过这些特性,C++ 类提供了一种强大的方式来组织和处理数据,使得代码更加模块化、易于理解和维护。但是,目前仅仅是感受与c语言结构体的区别,还没真正体验到面向对象的封装特性。它用于指定一个成员(如函数或变量)属于特定的类或命名空间。在类的外部定义成员函数时,

2024-01-25 23:33:36 357

原创 c++ 之Lambda表达式

Lambda 表达式是 C++11 引入的一种匿名函数的方式,它允许你在需要函数的地方内联地定义函数,而无需单独命名函数。在某些方面有相似之处,如它们都可以被编译器优化以减少调用开销,但它们在设计和用途上有明显的不同。因此,它可以修改 x 和 y 的原始值。以上就是一个捕获列表为空,的一个Lambda表达式的简单应用。函数的核心优势在于它们的匿名性和对外部变量的捕获能力,而。我们先回忆一下回调函数的写法,下面要实现找最大值的功能。是在 Lambda 定义时的值的拷贝。是在 Lambda 定义时的值的拷贝。

2024-01-24 23:08:28 899

原创 c++ 命名空间

假设我们要创建一个命名空间来包含与圆形相关的功能。// 获取圆形周长的函数// 获取圆形面积的函数在这个头文件中,我们定义了一个名为 Cir 的命名空间,其中包含了计算圆的面积和周长的函数,以及圆周率常量 PI。

2024-01-22 23:18:03 373

原创 QT简介 && 环境搭建

Qt 是一个跨平台的应用程序和用户界面框架,用于开发图形用户界面(GUI)应用程序以及命令行工具。它最初由挪威的 Trolltech (奇趣科技)公司开发,现在由 Qt Company 维护,2020年12月8日发布QT6。Qt 使用 C++ 语言编写,支持多种编程语言通过绑定进行使用。对于许多开发者和小型企业来说,Qt 的开源版提供了一个强大且灵活的开发框架,而对于需要额外支持和专有功能的大型企业或具有特定需求的项目,商业版则提供了所需的服务和资源。Qt 商业版。

2024-01-22 22:21:19 352

原创 2.运行LVGL

我们需要用到 Code::Block 和一个模板文件,具体文件在这里;访问,去把它克隆下来;

2023-12-11 19:06:18 59

原创 1. LVGL 初始

LVGL是一个轻量级的嵌入式图形库。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi。Kiss 在2016年将其发布在上。当时叫 LittlevGL而不是LVGL,后来作者重新命名为 LVGL,甚至连都改了。像一般的开源项目的那样,它是作为一个人的项目开始的。从那时起,陆续有近 100 名贡献者参与了项目开发,使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。

2023-12-11 18:17:24 62

原创 ASCII 字符的点阵显示

某位的值为 1 时,表示对应的像素要被点亮;值为 0 时表示对应的像素要熄灭。所以要显示某个字符时,根据它的 ASCII 码在 fontdata_8x16 数组中找到它的点阵,然后取出这 16 个字节去描画 16 行像素。现在要实现显示字符 “A” , 因为有十六行,所以首先要有一个循环 16 次的大循环,然后每一行里有 8位,那么在每一个大循环里也需要一个循环 8 次的小循环。小循环里的判断单行的描点情况,如果是 1,就填充白色,如果是 0 就填充黑色,如此一来,就可以显示出黑色底,白色轮廓的英文字母。

2023-11-21 18:35:13 252

原创 Framebuffer 应用编程

驱动程序设置好 LCD 控制器:根据 LCD 的参数设置 LCD 控制器的时序、信号极性;根据 LCD 分辨率、BPP 分配 Framebuffer。APP 使用 ioctl 获得 LCD 分辨率、BPPAPP 通过 mmap 映射 Framebuffer,在 Framebuffer 中写入数据假设需要设置 LCD 中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的 BPP 值设置颜色。

2023-11-21 14:20:08 51

原创 智能家居2.0

了解到门锁的玩法,低电平 LOW开锁,HIGH:上锁,暂时不打算买这个硬件了哈,这里的思路已经调通了的。视频监控脚本 (start_web_video.sh)写好脚本后,记得给该脚本文件加上可执行权限。人脸识别:(Camera.c)

2023-05-21 17:14:10 253

原创 App之webView

添加APP网络访问权限。

2023-05-19 00:24:27 117

原创 安卓Socket客户端接收并刷新控件

app收到消息,并且展示到控件上。

2023-05-18 17:48:41 93

空空如也

空空如也

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

TA关注的人

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