- 博客(106)
- 收藏
- 关注
原创 【QT】Qt QSS 中 background-image、image 和 border-image 的区别
需要背景纹理或渐变效果 :使用 background-image需要显示图标或内容图片 :使用 image需要创建可伸缩的UI元素 :使用 border-image。
2025-08-31 13:27:31
504
原创 【C++】STL标准模板库与函数符(函数对象)
匿名函数(Lambda表达式):没有函数名字C++规则:bool compare(int n) //一元谓词函数改写成Lambda表达式返回值 [](形参) { 函数源码 }返回值bool类型,省略Lambda的好处作用:普通函数必须要有声明和定义,无论程序员是否调用该函数,该函数都是要占用系统资源的(Lambda表达式是需要的时候直接写在调用的位置,不需要就不存在)#include <list> //list的头文件/*C++中的函数符(函数对象)包括如下几种情况。
2025-08-31 12:48:01
571
原创 【Linux驱动】Linux启动过程分析
uboot其实就是一个通用的引导程序——bootloader。boot,完成硬件的初始化,启动硬件平台loader,初始化硬件后,加载操作系统。支持各种硬件,例如支持ARM、MIPS、X86、AVR32、RISC-V架构…支持各种操作系统,例如支持WinCE、Linux内核、安卓操作系统…\quadlinux内核挂载的第一个文件系统,该根文件系统是挂载到根目录下的文件系统。
2025-08-23 09:57:20
670
原创 【Linux驱动】介绍什么是Linux驱动
quad驱动是 Linux 系统中设备和用户之间的桥梁,Linux 系统中,访问设备必须通过设备驱动进行操作,用户程序是不能直接操作设备的。Linux 系统中硬件、驱动和用户程序的关系如下图。\quad驱动程序运行与内核空间,用户程序只能通过内核提供的系统调用,由经 VFS 以及驱动程序才能访问和操作硬件,硬件设备传递的数据也必须经过驱动、VFS 和系统调用才能被用户程序接收。所以说,设备驱动是应用程序访问系统设备以及进行数据传递的桥梁和通道。
2025-08-20 23:25:48
657
原创 【QT】QT实现鼠标左右滑动切换图片
1、图片显示:6张图片通过QStackedWidget管理,每张填充整个窗口。4、循环切换:最后一张向右滑动回到第一张,第一张向左滑动到最后一张。1、在资源文件(qrc)中添加6张800x480像素的图片。2、使用QStackedWidget管理多个图片页面。3、动画效果:平滑的滑动动画,提升用户体验。2、水平拖动鼠标超过100像素距离。4、添加滑动动画效果增强用户体验。1、在窗口任意位置按住鼠标左键。3、释放鼠标完成图片切换。
2025-08-13 23:43:28
555
原创 【C++】C++中的运算符重载
*受到cout输出的原理启发,直接打印(输出)结构体,自定义的类对象(猫)*/class Catpublic:name=_name;age=_age;//缺陷:无法连续打印//可以连续打印private:int age;//void operator<<(ostream &out,Cat &other) //缺陷:无法连续打印ostream &operator<<(ostream &out,Cat &other) //可以连续打印。
2025-07-20 12:55:39
875
原创 【C++】C++中的模板函数和模板类
template<typename 模板的名字>或者template<class 模板的名字>模板 函数名(模板)模板的名字也叫做泛型名/*模板类的定义定义类:要求这个类可以给任意类型的指针申请堆空间*/class Test //模板类public:Test()cout<<"构造函数调用,申请堆空间"<<endl;//p=new 类型[10]~Test()cout<<"析构函数调用,释放堆空间"<<endl;delete []p;
2025-07-07 21:59:25
514
原创 【C++】C++中的友元函数和友元类
解决: C++提供了一种机制,A类的内部可以直接使用B类的私有成员(还是要用B类的对象调用私有成员) —》友元类。普通函数的内部可以直接使用某个类的私有成员 —》友元函数。问题:无论使用何种继承,子类都是无法使用父类的私有成员。
2025-06-29 22:44:45
424
原创 【C++】C++的虚析构函数
quad在C++中,当直接通过派生类指针删除对象时,派生类析构函数能够自动调用基类析构函数的原理,主要基于C++语言标准规定的对象销毁顺序和编译器生成的隐式代码机制。
2025-06-29 22:29:39
938
原创 【C++】C++中的虚函数和多态的定义与使用
*一个类只要定义了虚函数,该类所有的对象中会新增一个指针,该指针用来指向虚函数表(虚表)的首地址*/public:cout<<"动物吃"<<endl;public:void eat()cout<<"猫吃鱼"<<endl;public:void eat()cout<<"狗吃骨头"<<endl;public:void eat()cout<<"羊吃草"<<endl;return 0;/*执行结果:*/在不同的类中(分别位于子类和父类)
2025-06-23 21:57:10
1116
原创 【C++】C++枚举、const、static的用法
写法一:使用枚举 enum 枚举类型的名字{black,white};//枚举不占用类的大小class Catprotected:enum 枚举类型的名字{red,black,white};
2025-06-22 21:25:23
496
原创 【QT】QT项目修改QT设计师界面类类名和文件名的方法
3)输入与类名一致的新文件名(如 NewName.h / NewName.cpp),弹出对应的.h或.cpp文件是否同步更新,选择确定。2) 选择 Refactor > Rename Symbol Under Cursor(快捷键 Ctrl+Shift+R)。1)在源代码中右键点击要修改的类名(如 class OldName)。1)在 项目文件树 中右键点击要修改的文件(.h 或 .cpp)。3) 输入新的类名(如 NewName),点击 Replace。2)选择 Rename File。
2025-06-17 23:19:52
505
原创 【C++】多重继承与虚继承
虚继承可以解决二义性和A被构建多次这两个问题,普通继承不能解决;虚继承通过增加一个指针(浪费了一点存储空间),换取了更高的效率只要一个类虚继承了其它类,那么该类所有的对象中都会新增一个指针,该指针专门用来指向系统中虚基类表的首地址。
2025-06-12 22:46:08
1067
原创 【C++】继承和派生
那么基类的保护成员就是在派生类中也是充当保护成员,可以在派生类的内部使用,但是不能外部使用。那么基类的公有成员就是在派生类中是充当保护成员,可以在派生类的内部使用,但是不能外部使用。那么基类的保护成员就是在派生类中是充当保护成员,可以在派生类的内部使用,但是不能外部使用。那么基类的公有成员就是在派生类中是充当私有成员,可以在派生类的内部使用,但是不能外部使用。那么基类的保护成员就是在派生类中是充当私有成员,可以在派生类的内部使用,但是不能外部使用。上面表格权限是基类中的成员继承到子类后的成员权限。
2025-06-12 22:38:08
992
原创 【C++】lambda表达式
请注意,上述代码仅仅是为了讲解Lambda函数的形参列表的语法逻辑,而并不是Lambda函数的一般典型用法,因为上述例子已经违背了匿名函数的初衷—将Lambda函数赋值给了一个具名函数对象sum,这么做毫无意义,如果非要定义一个具名函数的话,那么完全可以直接编写一个普通的函数 sum 来达到此功能。那么,Lambda函数形参列表的典型场景是怎样的呢?Lambda匿名函数被设计为一种对象,这意味着可以将它们作为函数的参数、返回值,有时,那些使用了Lambda函数作为参数、返回值的函数,被称为高阶函数。
2025-06-12 21:09:59
1915
原创 【QT】QT多语言切换
ts(Translation Sourcefile)是XML格式的翻译源文件如下图:有如下信息输出说明生成成功:若不添加会报如下警告:.qm 文件是 Qt message Qt 信息文件示例代码:可直接放入工程测试// mainwindow 登录界面// info_win 信息界面// .ui 文件// mainwindow.ui// info_win.ui代码框架:在代码中设置的文本需要 tr()函数,标记为可翻译的修改完后可在Qt-creator做发布(lrelease)
2025-06-08 11:49:25
1729
原创 【C++】类的构造函数
*构造函数用途:用来初始化对象里的数据如果程序员自定义构造函数(无论是否带参数),那么系统就不会再自动生成默认的构造函数*/public:// 通过Animal的构造函数对Animal的属性设置age = _age;cout<<"动物的带参数构造函数被调用了"<<endl;//正确,创建Animal的对象// 错误的,程序员写了带参数的构造函数,因此系统不会再生成无参构造函数,若要排除该错误,需自定义一个无参构造。
2025-06-02 11:05:52
1082
原创 git clone时出现无法访问的问题
2、如果需要代理,确保代理工具(如 Clash)已启动且监听 7890 端口。由于我的git之前设置了代理,然后在这次克隆时又没有打开代理。如果返回 443 连接失败,可能是网络被防火墙拦截。4、尝试直连(关闭代理工具)3、检查系统环境变量。
2025-05-22 00:16:26
707
原创 【C++】C++的拷贝构造函数介绍使用
构造出来的新对象跟原有的对象共用同一块堆空间,一旦某个对象修改了堆空间中的数据,其它对象全部跟着修改,这种现象称之为浅拷贝。程序员自己动手写个拷贝构造函数,解决浅拷贝的bug,这个自定义的拷贝构造函数实现就是深拷贝。用一个对象去初始化赋值给另外一个新的对象的时候就会自动调用拷贝构造函数。常规的赋值不会调用拷贝构造函数。类名(const 类名 &)
2025-05-20 23:05:38
557
原创 【C++】C++ 类的内存空间大小
如果定义对空的类或者结构体取sizeof()的值为0,那么该空的类或结构体实例化出很多实例时,在内存地址上就不能区分该类实例化出的实例。所以,为了实现每个实例在内存中都有一个独一无二的地址,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。通俗一点讲 就是 用空类实例化一个对象,这个对象的实体要存在内存中,既然要存在内存中那么就需要有个地址能访问他,为了避免多个实例对象的地址 问题,所以才有了者一个字节的空间。
2025-05-09 22:52:53
298
原创 【C++】C++中的命名/名字/名称空间 namespace
探讨:在实际的系统开发中,所有的开发工作,通常都不会仅由一个人来开发完成,不同的人只负责自己功能模块,他们在设计时,比如声明变量,通常情况下,不会考虑其他人是否已使用该变量名,在模块功能测试时,相互之间是独立的,完全没有问题,当系统功能合成 时,不可避免地会出现变量或函数的命名冲突,因为变量或函数重名而导致的问题将会造成一定的混乱。全局作用域是从C语言就开始有的一种作用域,在C++中,有时为了强调某符号的全局特性,或为了避免与导入的名字空间中的重名符号冲突,会在使用全局符号的时候加上。
2025-05-06 23:17:02
876
原创 【QT】QT中的软键盘设计
参数: type --》事件类型 QEvent::KeyPresskey --》按键的键值摸索规律:字母按键(无论大小写)键值 A/a 65B/b 66modifiers --》你是否使用了某个组合键Qt::NoModifier //没有使用组合键Qt::ShiftModifier //使用了shift按键text --》点击的按键的字面值//把指定的事件发送出去参数:receiver --》事件的接收者event --》要发送的某种事件。
2025-05-05 21:55:04
1385
原创 【QT】QT中http协议和json数据的解析-http获取天气预报
地址: http://t.weather.itboy.net/api/weather/city/xxxxx ,其中xxxxx即为城市代码(数组:用[]来表示,数组里面只能存放相同类型的数据 [1,2,3] [{},{},{}] [键值对,键值对,键值对]json数据:一种数据格式,在计算机前端开发中经常使用这个格式的数据,保存信息很方便。键值对:用键:值表示, 键只能是字符串,值可以是任意合法类型。json数据只能由数组,对象,键值对三种构成。对象:用{}来表示,可以嵌套 {键值对}
2025-05-04 23:53:42
1205
原创 【QT】QT中的网络编程(TCP 和 UDP通信)
服务器: socket --》bind --》listen --》accept --》read/write --》close。客户端: socket --》bind --》connect --》read/write --》close。QT中: QHostAddress::Any --》获取本地主机上的任意一个ip。linux中: INADDR_ANY --》获取本地主机上的任意一个ip。QTcpServer --》表示服务器。QTcpSocket --》表示套接字。现象同1.2.1.2。
2025-05-04 23:20:41
1553
原创 【QT】QT多线程
第一步:自定义一个类继承QThread,然后重写父类的同名方法run()(此时程序员在run方法里面实现自己的代码逻辑)[virtual protected] void QThread::run() //源码也是空的。类比:linux中多线程 pthread_create( 线程的任务函数)第二步:创建一个子类对象,调用start()方法就能自动开启一个线程。原理: start()方法开启线程,然后自动执行run函数。同理:QT中创建线程,任务函数也是需要程序员自己去写。
2025-04-27 20:58:36
557
原创 linux中shell脚本的编程使用
quadshell编程就是通过shell语法将shell命令组合起来,写入一个文件中。将来运行这个文件时,就会执行里面的每一行shell语法,这个文件称之为shell脚本文件。实现更加自动化和智能化。str=hello1)expression 既可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到 expression 的值就可以。2)pattern 可以是一个数字、一个字符串,甚至是一个简单的正则表达式。
2025-04-26 13:00:30
799
原创 【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式
适用场景:现代Qt项目,推荐首选(QT5以上才支持)缺点:依赖运行时类型转换,安全性较低。优点:代码简洁,无需额外参数。适用场景:简单场景,少量按钮。优点:安全直观,直接传递标识。缺点:需要为每个按钮单独连接。
2025-04-23 18:58:41
572
原创 【QT】 QT中的列表框-横向列表框-树状列表框-表格列表框
选择【加载目录】–>确定后将所选择的目录显示在横向列表框种。QListWidget 表示横向列表框。QModelIndex 表示列表项索引。QListWidgetItem 表示列表项。跟横向列表框类似,请参见横向列表框信号的介绍。
2025-04-21 00:02:11
736
原创 【QT】 QT定时器的使用
QTimer是Qt中提供的一个定时器类,它可以定时触发一个信号,用于周期性执行一些操作。使用QTimer,可以轻松地实现定时器功能,如周期性地更新UI界面,周期性地执行一些任务等。
2025-04-15 22:34:25
846
原创 【C++】C++中函数带默认参数和占位参数
占位参数:跟默认参数不同,在函数定义时,形参只写类型,不写形参变量名。优点:程序员在调用这个函数的时候,实参可以灵活选择。概念:定义函数的时候,可以给函数的形参设置默认值。
2025-04-13 16:31:43
401
原创 【C++】C++的引用
/使用命名空间std//公式:类型名 &引用的名字 = 变量名;//第一种:指向普通变量的引用// 定义引用cout<<"a的地址:"<<&a<<endl;cout<<"b的地址:"<<&b<<endl;//第二种:指向指针的引用int c = 45;// 定义引用cout<<"p的地址:"<<p<<endl;cout<<"x的地址:"<<x<<endl;// 定义引用cout<<"q的地址:"<<(int *)q<<endl;
2025-04-13 15:32:46
502
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人