自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

热土程序园:分享技术,利他愉己~

AI应用于程序开发以提高效率,在路上...

  • 博客(110)
  • 收藏
  • 关注

原创 QT中Qwt、QChart、QCustomPlot使用与性能对比

QT中对比Qwt、QChart、QCustomPlot三个绘图库,qcustomplot在绘制大量点的二维曲线上性能优势明显,通过qcustomplot程序合理使用(包括开启硬件加速)及针对项目需求的优化,在实际项目应用中应用qcustomplot做到实时刷新曲线一千万点是没有问题的,甚至设计合理还能做到更高。关键词:QT5绘图,QT6绘图,qcustomplot,qchart,QT绘图性能,qcustomplot绘图性能测试,qchart绘图性能测试;

2023-12-06 14:52:02 2676 6

原创 C语言高效学习、提升方法

C语言高效学习、提升方法C语言怎么学习、提升最快呢?个人觉得还是要从框架上去着手学习,用全局眼光去看、去学,主要是三部分:关键字及基本语法、重点功能点及标准库函数;只要把这三部分基本搞懂了,剩下就就是去刻意练习与项目实践,更熟练也就更精通,也就能写出架构更合理、更精妙的程序~

2024-04-27 12:35:44 597

原创 算法复杂度介绍

算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机应用的早期,存储容量很小,所以对空间复杂度很是在乎。但现在计算机行业迅速发展,计算机的存储容量已经很高,所以我们如今已经不需要再特别关注一个算法的空间复杂度。

2024-04-27 12:29:54 500

原创 C++中的lambda表达式详解

1.lambda 表达式(也称为 lambda 函数)lambda 表达式是C++11中引入的一种方便创建匿名函数对象的方式。它们可以捕获其所在作用域中的变量,并在需要时调用它们。Lambda 表达式提供了一种简洁、方便的方式来定义小型的、可重用的函数对象,而无需显式地定义一个类并重载其调用运算符。它们常用于简短的回调、排序准则、以及任何需要简单函数对象的场合。

2024-04-26 20:44:16 676

原创 泛型编程介绍

泛型编程(Generic Programming)在计算机科学中,是一种允许一个值取不同数据类型(所谓多态)的技术。这种编程风格强调使用泛型技术,旨在推出一种针对算法、数据结构和内存分配机制的分类方法,以及其他能够带来高度可重用性、模块化和可用性的软件工具。泛型这个词并不是通用的,在不同的语言实现中,具有不同的命名。在Java/Kotlin/C#中称为泛型(Generics),在ML/Scala/Haskell中称为Parametric Polymorphism,而在C++中被叫做模板.

2024-04-26 20:40:23 624

原创 C++ explicit关键字详解

C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的;跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).注意explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了。

2024-04-23 20:33:51 406

原创 C及C++标准与QT版本介绍

C及C++标准与QT版本介绍一.软件规范及组织GNU是“GNU's Not Unix”的缩写,是GNU计划(GNU Project)GPL全称是GNU General Public License,中文名为GNU通用公共许可证。3.POXIS(Portable Operating System Interface)System V是由AT&T开发的Unix操作系统的一个版本,在1983年首次发布。二.C语言与C++标准2.C++标准:三.QT版本与选择:注意:Qt6不支持Windows 7

2024-04-20 10:37:28 689

原创 C++多态

多态(polymorphic)就是对于某个事情,不同对象去做会有不同的状态。(例如:不同身份的人去买火车票,会有不一样的价格)多态是在不同继承关系的类对象,调用同一个函数,产生不同的行为。多态的构成条件:被调用的函数必须是虚函数,并且子类必须对父类的虚函数进行重写。必须通过父类的指针或引用调用虚函数。二.如何实现多态1.使用虚函数(Virtual Function):2.创建派生类并重写虚函数:3.通过基类的引用或指针调用虚函数:

2024-04-20 10:32:22 845

原创 预处理与宏定义

预处理,宏定义在C语言中,预处理阶段是代码执行之前的一个重要步骤,负责对源代码进行宏替换、条件编译等处理。预处理器提供了强大的工具,使得我们能够在编写代码时更加灵活、高效。

2024-04-19 09:27:39 616

原创 C++类型推导之auto关键字

C++类型推导之auto关键字auto关键字是在C++11中引入的;auto关键字用于自动推断变量的类型。它可以根据变量的初始化表达式自动确定变量的类型,从而使代码更加简洁和易于阅读。使用auto关键字可以避免显式地指定变量的类型,特别是在涉及复杂的类型或使用模板时,可以减少代码的冗余。

2024-04-19 09:25:11 377

原创 C语言面试常见问题汇总

C语言面试常见问题汇总

2024-04-18 09:31:07 430

原创 C++模板

C++模板 是一种用于创建通用代码的机制,它允许程序员编写适用于多种数据类型的通用函数或类。 模板的定义和实现通常分为两部分:头文件(.h或.hpp文件)中的模板声明和实现文件(.cpp文件)中的模板定义。C++模板的优点:灵活性、可重用性和可扩展性减少开发时间高效性

2024-04-18 09:25:37 843

原创 NULL—0—nullptr 三者关系

NULL—0—nullptr 三者关系NULL,0,nullptr值都是0,但是类型不同,但是由于C头文件中NULL定义宏混乱,可能是int 0,也可能是(void*)0;所以在C++11及以后的标准中引入新的空指针nullptr,nullptr就是(void*)0,所以在C++中空指针统一用nullptr。

2024-04-17 09:23:31 242

原创 Qt中定时器的3种实现方法

Qt中定时器的3种实现方法一.使用QTimer定时器类(首选)void QTimer::setInterval ( int msec )int QTimer::start void QTimer::stop ()二.QObject中的定时器的使用1.需要用到三个函数int QObject::startTimer void QObject::timerEvent void QObject::killTimer 三.静态的singleShot ()函数创建单触发定时器(不推荐)

2024-04-17 09:21:14 961

原创 QCustomPlot移植android后实现曲线放大缩小

QCustomPlot移植android后实现曲线放大缩小1.QCustomPlot在windows系统上可以支持鼠标左键按下平移拖动,滚轮放大缩小,矩形放大功能;但是到了android触摸屏上无法识别鼠标滚轮事件,同时控件也不识别多点触控的放大缩小,这就导致想要实现放大缩小比较困难。本文会给出两种解决方法。

2024-04-13 08:27:22 814

原创 C语言中生成随机数的几种方式

C语言中生成随机数的几种方式1.rand介绍C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下所示:int rand (void);2.srand介绍C语言中还提供了一个函数叫srand用来初始化随机数的生成器的,srand的原型如下:void srand (unsigned int seed);3.time函数介绍在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下:time_t time (time_t* timer);

2024-04-12 20:42:17 853

原创 c语言中三个open,fopen,popen的区别

c语言中三个open,fopen,popen的区别一.openOpen是unix系统调用函数(包括Linux),返回的是文件描述符,它是文件描述符表里的索引。二.fopenfopen是ANSIC标准中的C语言库函数,在不同的系统中应该调不同的内核api,返回的是一个指向文件结构的指针。三.popenFILE *popen(const char *command, const char *type);功能:popen()函数通过先创建一个管道,然后调用 fork 产生一个子进程,让子进程执行sh

2024-04-12 20:39:32 998

原创 C++重载

函数重载1.概念及规则在C++中,函数重载(Function Overloading)是一种允许在相同作用域内使用相同函数名定义多个函数的功能,但这些函数的参数列表(参数类型、参数数量或参数顺序)必须不同。函数重载的主要目的是为了增强代码的可读性和灵活性,使得程序员可以使用相同的函数名来执行不同的操作,只需根据参数的不同来区分。运算符重载在 C++ 中,运算符重载是一个允许程序员自定义各种运算符(如 + , - , == , != 等)在自定义类型(类或结构体)上的行为的特性。

2024-04-10 09:10:31 345

原创 QT及C++中的构造函数与析构函数

1.什么是构造函数类的构造函数 是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void 。构造函数可用于为某些成员变量设置初始值。2.什么是析构函数析构函数是 C++ 中的一个特殊的成员函数,它在对象生命周期结束时被自动调用,用于执行对象销毁前的清理工作。析构函数特别重要,尤其是在涉及动态分配的资源(如内存、文件句柄、网络连接等)的情况下。

2024-04-10 09:08:58 1070

原创 C++Qt中异常处理try-catch

运行时错误是指程序在运行期间发生的错误,例如除数为 0、内存分配失败、数组越界、文件不存在等。C++ 异常(Exception)机制就是为解决运行时错误而引入的。二.应用程序调试的几种方法1.直接打印信息:如printf,qDebug2.用log打印存储3.try-catch捕捉

2024-04-09 09:28:30 368

原创 C++与Qt中回调函数的两种实现方法

回调函数的应用场合事件驱动编程:在图形用户界面(GUI)编程中,用户的每一个动作,如点击按钮、移动鼠标等,都可能会触发一个事件。这些事件常常通过回调函数来处理。例如,当用户点击一个按钮时,你可能希望执行一个特定的函数。异步编程:在网络编程或者其他需要异步处理的场景中,当一个长时间的操作(如网络请求)完成时,你可能希望执行某个函数。这个函数可以通过回调来指定。定时器:某些编程环境允许你设置定时器,当定时器到期时执行一个函数。这个函数就是通过回调来指定的。

2024-04-09 09:27:26 1137

原创 QT及C++中引用的用法和意义

QT及C++中引用的用法和意义1.引用的含义引用(Reference)是 C++ 相对于C语言的又一个扩充。引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够找到这份数据。2.引用的本质其本质只是对指针进行了简单的封装,它的底层依然是通过指针实现的。在 C++ 中引入引用的直接目的是为了让代码的书写更加漂亮,尤其是在运算符重载中,不借助引用有时候会使得运算符的使用很麻烦。

2024-04-07 11:46:43 1343

原创 Qt调用C函数

Qt或者C++中调用C函数方法1.如果在Qt或者C++文件中直接调用.c文件中的C函数是会报错的,如:error: undefined reference to `vendor_app_handle()'2.这种情况有两种解决方法:(1)在头文件中直接使用#ifdef __cplusplusextern "C" {#endif#include "xxx.h"int vendor_app_handle(void);#ifdef __cplusplus

2024-04-07 10:22:45 348

原创 QT6 Android设置程序图标及名称

QT6 Android设置程序图标及名称的方法

2024-04-07 10:20:39 453

原创 QT各种锁及线程同步应用

在Qt中,主要有以下几种锁的类型,可以用于实现同步功能:(1)QMutex(互斥锁):是最常见的锁类型,用于实现简单的互斥访问。(2)QMutexLocker:是一个RAII类,用于简化对QMutex的加锁和解锁过程。(3)QReadWriteLock(读写锁):用于实现读写分离的锁机制,允许多个线程同时读取共享资源,但只有一个线程可以进行写入操作。(4)QSemaphore(信号量):允许控制对共享资源的并发访问数量。(5)QWaitCondition(条件变量):用于线程间的等待和唤醒

2024-04-06 09:41:19 786

原创 QT智能指针

Qt智能指针是一种能够在不需要手动管理内存的情况下,自动释放资源的指针。它们是C++11的std::shared_ptr的一种扩展,可以用于管理Qt对象,尤其是那些不是QObject的对象。使用智能指针可以避免内存泄露和悬垂指针等问题,同时也提高了代码的可读性和可维护性。1.Qt框架提供了几种智能指针:QSharedPointer:QScopedPointer:QPointer:QWeakPointer:

2024-04-06 09:31:03 831

原创 QT实现NTP功能

.NTP定义NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用于分布式设备(比如电脑、手机、智能手表等)进行时间同步,避免人工校时的繁琐和由此引入的误差,方便快捷地实现多设备时间同步。NTP校时服务基于UDP传输协议进行报文传输,工作端口默认为123/udp。NTP使用协调世界时(UTC)以极高的精度同步计算机时钟时间,例如在局域网(LAN)中低至1毫秒,在互联网上则在数十毫秒内。2.NTP 网络结构

2024-04-04 11:04:20 1414

原创 QT之单例模式

单例模式的优点和缺点优点:提供全局访问点,方便在应用程序的不同部分共享对象。确保只有一个实例存在,节省资源。提供对单一资源或配置的集中管理。支持懒加载,只在需要时创建实例。缺点:可能导致全局状态,增加了代码的耦合性。在某些情况下可能会引入单点故障。难以进行单元测试,因为单例对象难以模拟或替代。

2024-04-04 10:59:05 935

原创 QT6实现音频输出方法

QT6音频调用输出及与QT5的区别1.音频输入QAudioSource代替QAudioInput类QAudioSource类提供了一个接口,用于从音频输入设备接收音频数据。2.音频输出QAudioSink代替QAudioOutput类QAudioSink类提供了一个接口,用于将音频数据发送到音频输出设备。二.代码示例其功能为本地产生一些声音数据,然后输出到扬声器或者耳机。代码为纯qt实现,可以应用在windows、linux和android上,无需修改。

2024-03-29 14:40:55 1444

原创 QT实现蒙层效果

一.蒙层的作用1.为了其他窗口不被误操作,禁止对其他窗口操作二.应用场景1.一些触摸屏设备上弹出一个dialog窗口,在操作这个窗口的时候不希望后面的窗口被误操作2.之前做一个医疗设备就曾有过这种需求,因为医疗设备对安全性要求非常高,是绝对不允许误触的

2024-03-28 11:24:23 1231 1

原创 软考的价值

软考全称计算机技术与软件专业技术资格(水平)考试,是由国家人力资源和社会保障部(原人事部)与工业和信息化部(原信息产业部)领导的国家级考试。其目的在于科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。证书用途:积分,落户,职称,补贴,抵扣当年个税,能力提升

2024-03-28 10:27:16 174

原创 QT实现windows下获取CPU、内存及磁盘信息

QT实现windows下获取CPU、内存及磁盘信息

2024-03-27 09:24:39 1137

原创 QT中实现log存储的四种方法

业项目开发中,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理,下面介绍几种QT中日志功能的实现方式。二.QT中日志功能的实现方式1.日志重定向输出2.log4qt3.QsLog 4.qclog

2024-03-27 09:22:22 801

原创 QT6 android下配置文件打包到APK

QT6 android下配置文件打包到APK用QT做android开发,生成的apk文件默认不包含程序配置文件和png文件,导致程序在android上无法读取必要的参数和logo,本文主要解决这个问题,并详细讲述QT android 的apk程序打包流程。二.APK打包流程1.如何生成APK如何将资源文件打包进APK中,以及如何通过代码访问。

2024-03-22 09:28:13 1228

原创 QT网络编程之实现UDP广播发送和接收(多网卡,多IP)

QT网络编程之实现UDP广播发送和接收(多网卡,多IP)1.UDP广播查找IP问题有时候电脑上有多个网口,也就有多个IP,如何把每个IP连接的设备的IP全部找出来,并做成一个下拉列表形式显示出来2.使用场景某设备的业务通信是使用TCP协议,当该设备部署到一个新的网络环境当中时,设备的IP地址是未知的,需要知道或修改设备的IP地址才能够进行TCP的通信。此时就可以在局域网内通过UDP广播的形式使该设备收到广播消息,从而使用设备返回IP地址、返回设备的MAC、修改IP地址等操作。常见的比如IP摄像头

2024-03-21 09:26:45 279

原创 QT网络编程之实现UDP广播发送和接收

QT网络编程之实现UDP广播发送和接收如果向全网段发送广播消息,那么广播地址为:255.255.255.255;广播消息接收方需要绑定0.0.0.0地址并监听指定端口即可收到广播的群发消息。使用场景某设备的业务通信是使用TCP协议,当该设备部署到一个新的网络环境当中时,设备的IP地址是未知的,需要知道或修改设备的IP地址才能够进行TCP的通信。此时就可以在局域网内通过UDP广播的形式使该设备收到广播消息,从而使用设备返回IP地址、返回设备的MAC、修改IP地址等操作。常见的比如IP摄像头。

2024-03-21 09:23:42 1072

原创 QT网络编程之Http

QT中的HTTP类在Qt中,用于进行HTTP通信的类是QNetworkAccessManager类和相关的类。QNetworkAccessManager提供了一个用于发送网络请求和接收网络响应的高层API,它基于Qt的网络模块实现。

2024-03-20 09:29:44 1154

原创 QT6实现创建与操作sqlite数据库三种方式方式对比(二)

Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),QSqlQuery、QSqlQueryModel、QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更厉害,甚至第三种QSqlTableModel,根本就不需要开发者懂SQL语言,也能操作Sqlite数据库。

2024-03-20 09:26:38 958

原创 QT6调用python代码实现复杂结构数据交互

Python功能强大,很多Qt或者c/c++开发不方便的功能可以由Python编码开发,尤其是一些算法库的应用上,然后Qt调用Python。本文实现混合编程模式,可以通过QT调用Python代码,实现二维数组及list结构的交互。

2024-03-19 09:28:35 66

原创 QT6实现创建与操作sqlite数据库及读取实例(一)

Qt为SQL数据库提供支持的基本模块(Qt SQL) Qt SQL的API分为不同层: 驱动层 SQL API层 用户接口层1.驱动层 对于Qt 是基于C++来实现的框架,该层主要包括QSqlDriver,QSqlDriverCreator,QSqlDriverCreatorBase,QSqlPlugin,and QSqlResult.这一层提供了特定数据和SQLAPI层之间的底层桥梁。2.SQL API层 对于SQL API层提供了数据库的访问相关类

2024-03-19 09:07:05 1278

zoomlinechart.zip

android上可以实现多点触摸放大、缩小及移动qchart图形

2024-04-12

QT6实现音频输出功能

其功能为本地产生一些声音数据,然后输出到扬声器或者耳机。 可以应用在通过网络接收的声音数据,然后输出到音频播放设备; 代码为纯qt实现,可以应用在windows、linux和android上,无需修改。

2024-03-29

QFtp实现的ftp客户端实例工程

QFtp实现的ftp客户端实例工程,直接编译可用,qt5.12环境开发

2024-03-04

QT-modbus.zip

QT_modbus.zip 为QT实现的串口和网络连接的modbus通信功能的完整代码,编译环境为QT5.12,下载直接编译可用。

2024-02-19

QPainter绘制图形代码示例.zip

QPainter绘制图形代码工程中是在QT5.12中绘制各种图形的代码示例,包括线、矩形、圆形,扇形,渐变色及各种特征设置;并详细讲述了QPainter,QPen,QFont,QBrush及QPrinter的用法,各种渐变色属性的设置,下载后即可直接使用。

2024-02-19

QT5.12实现多线程代码示例

QT5.12实现多线程示例,逻辑功能如下: 点击Start A按钮开始打印字符“A”,同时按钮显示Stop A;点击Start B按钮开始打印字符“B”,同时按钮显示Stop B; 点击Stop A按钮停止字符“A”打印,点击Stop B按钮停止字符“B”打印,点击Quit按钮退出Tread窗体。 完整工程代码,可直接编译使用。

2024-02-18

QT中动态库制作及调用

QT中动态库制作及调用工程实例,下载直接可用; 对应本博客博文:QT中自己实现DLL及调用 链接:https://blog.csdn.net/xieliru/article/details/135581244?spm=1001.2014.3001.5502

2024-01-14

QT通过QPdfWriter类实现pdf文件生成与输出完整工程示例

QPdfWrite是一个用于创建PDF文件的类,它是Qt库的一部分。它提供了一些方法和功能,使您能够创建和写入PDF文件。 工程代码对应博客文章:https://mp.csdn.net/mp_blog/creation/editor/135565616 完整工程代码,下载后可以直接编译使用 包含设置pdf文件title,日期,页码,排版功能

2024-01-13

QT6实现usb摄像头的显示与抓拍功能

QT6实现usb摄像头的显示与抓拍功能,完整工程,下载直接可用

2024-01-07

新榜2023内容产业年度报告

【新榜】2023内容产业年度报告:2023年度微信公众号、抖音,视频号,小红书等平台的深度分析报告; 趋势分析,数据分析

2024-01-05

Qwt库画Spectrogram频谱图工程代码

Qwt库画Spectrogram频谱图工程代码,对应博客文章:https://blog.csdn.net/xieliru/article/details/135326713?spm=1001.2014.3001.5501

2024-01-01

QT中 QEvent事件应用完整工程

本工程实现了QT中event事件基本用法,提供完整项目实例代码,下载即可使用

2023-12-30

FTP client 软件

三款ftp client软件,其中一款为小巧、功能齐全的免安装版本,非常好用~

2023-12-07

USB通讯程序开发调试工具

资源内一共三款USB通讯程序开发调试必备工具: 1.USB Monitor Pro 允许监控 USB 流量,检测 USB 设备软件,硬件和驱动程序开发过程中的错误和问题。 2.USB Device Tree Viewer 在微软USB viewer的基础上开发的USB设备信息的神器。可以方便的查看当前电脑连接了哪些usb设备,同时能够列出设备的详细信息; 3.Zadig 是一个免费的USB驱动程序安装器,可以为您解决USB驱动程序相关的问题; 工具具体功能及使用介绍见本博客USB专栏文章, USB调试工具与资料介绍:https://blog.csdn.net/xieliru/article/details/132985864?spm=1001.2014.3001.5502

2023-12-07

空空如也

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

TA关注的人

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