- 博客(180)
- 资源 (15)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景
UDP主要丢包原因及具体问题分析https://libaineu2004.blog.csdn.net/article/details/48039599?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogC
2021-03-29 16:53:41
4361
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 最大可传输单元 MTU 对 UDP/TCP 包的大小限制
目录一、MTU 简述 - 数据帧的长度1、定义2、MTU 值的范围:二、计算 udp 或 tcp 包的最佳大小:三、如何测出当前网络最佳MTU值1、首先,我们必须明白什么才是最佳的 MTU 值。2、小知识:3、怎样才能知道自己的当前网络环境的 MTU 值是多少呢?4、ping 命令使用的是 ICMP 协议5、计算结果分析一、MTU 简述 - 分包后数据包最大长度1、定义Maximum Transmission Unit(最大可传输单元) 的缩写,它的单位是
2021-03-27 16:18:15
15618
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT 容器 QList,QLinkedList,QVector,QMap,QHash优缺点,与使用范围
https://qtdoc.cn/Src/C/Container_Classes/Container_Classes.html一、前言:如果想看 STL容器 的优缺点,请查看如下文章:《C++ STL容器 底层数据结构》 https://blog.csdn.net/LearnLHC/article/details/89552420?spm=1001.2014.3001.5502《c++ map、multimap 的使用方法》 https://blog.csdn.net/LearnLHC..
2021-03-01 11:26:33
1158
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT-功能点记录
目录1. 抓取当前屏幕2. qt界面设置边框-样式表实现3. QT QLabel设置字体和颜色4. 窗口整体透明,但窗口内的控件不透明5. 样式表 5.1 QSpinBox,QTimeEdit 5.2 QDialog设置圆角 5.3 QSlider 滑块5.4 QRadioButton5.5 设置 QSS 的动态属性 -- setProper...
2020-09-09 14:46:47
551
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT 实现 以名片列表的形式 显示 10万 条数据 - 如何流畅的显示十万条数据
1、常用实现方式 - 有多少就创建多少,就显示多少MainWindow.h文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QWidget>#include <QTableWidget>#include <QVBoxLayout>#include <QTableWidgetItem>#include <QList>#include <QString>st
2020-09-01 17:52:34
1383
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT - 图像处理 ( 1 ) - QImage像素级操作 - (转灰度、亮度、暖色、冷色、饱和度、模糊、锐化、金属效果 )
0、前言这篇文章主要阐述了如何使用Qt在像素级别上对图像进行操作,并实现了一些图像效果,这些效果主要有:灰度,模糊,锐化,添加相框,金属质感,改变图像饱和度,亮度还有白平衡。scanLine 返回某一行数据,转换为QRgb指针可进行直接有效的像素存取操作。一、QImage、QPixmap、QPicture区别简介:QBitmap:存储单色的图像,比如遮罩QPicture:...
2019-07-16 17:09:16
5233
1
原创 LVGL库入门 04 - 颜色与图像
lv_color_t dark_purple = lv_palette_darken(LV_PALETTE_PURPLE, 2) // 调深两级,最多可以调深或浅 4 级。注意在创建的过程中,将以上图片应用到按钮的普通状态(即什么事件都没有的状态)的外观中。注意转换完成后得到的是一个完整的源文件,文件名同时也是图片的变量名。这里的位置是由比例衡量的,渐变区域在每个方向都被划分为 256 份,例如 128 代表中间位置,255 代表结束位置等。由于标签的宽度是不确定的,因此中间的图片必须是水平可平铺的。
2023-11-02 15:16:21
3167
1
原创 LVGL库入门 03 - 动画
这也很好理解:样式在创建的过程中可能发生多次修改,因此需要确定最终的表现结果如何,再着手绘制,否则整个控件可能会重绘多次,占用大量无效的资源。函数中去获取一个控件的位置、宽度等信息,由于它们都属于样式的一部分,此时还没有实际计算,因此得到的可能是默认值,造成动画始末效果偏离预期轨迹。除此之外,两者的区别还有:过渡只是样式的一部分,而动画和样式之间是独立的。LVGL 的官方文档还给出了一个示例,可以实现类似圆形的旋转滚动,效果非常不错,不过涉及的计算较多,感兴趣的可以自行阅读官方文档。
2023-11-02 15:11:47
2026
原创 LVGL库入门 02 - 布局
一般情况下 flex-grow 和带 wrap 的 flex-flow 是冲突的,也就是说所有设置了 flex-grow 的控件都会在同一行布局,但它们的宽度可能变得很窄。调整一个控件的位置(或者使用类似的函数单独调整一个方向的坐标),将它放在相对父容器左上角的合适位置。这种对齐的方式对于控件不多的情况下来说是足够了,但是有些时候需要对很多并列的控件布局(例如,一个计算机界面的所有按钮)。按钮在创建时还可以指定按钮的图标,图标的本质就是 Unicode 中的特殊符号,在。如果一个控件被设置了冒泡事件标志。
2023-11-02 14:57:23
2077
原创 LVGL库入门 01 - 样式
在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式。每个控件都可以独立添加样式,创建的样式之间互不影响。可以使用lv_style_t样式是延迟渲染的,因此需要使用static存储类别说明符或将其声明为全局变量。样式是多方面的,不仅包括颜色和形状,还包括边距、边框,甚至动画变换效果等细节。
2023-11-02 11:33:17
1045
原创 CMake 的常用命令
CMake允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案。例如,可以将MathFunctions库设为一个可选的库,如果该选项为ON,就使用该库定义的数学函数来进行运算。否则就调用标准库中的数学函数库。............
2022-07-26 20:19:50
8834
原创 七大顶尖 C++ 开源构建系统
Make 无处不在。但这也不难理解,Make 创建于1977 年,在计算机行业的影响深远。Make 广泛适用于所有类 Unix 系统、Macintosh 系统,以及 Windows 的所有版本中,可通过 Cygwin 或本地 nmake 执行。Make 使用简单的文本文件 makefiles 来指导构建。makefile 包含如下规则:规则包含 Target(目标)和 Recipe(命令)。Target 是文件名,在上面的例子中是 shownottell。分号分隔的是 Prerequisites(依赖文件
2022-06-24 09:49:51
1299
1
原创 Ubuntu 修改默认 Python版本
目录1 查看Python版本2 用户级修改3 系统级修改3.1 基于软链接3.2 基于update-alternatives4 pip错误先查看系统中有那些Python版本:再查看系统默认的Python版本:2 用户级修改为某个特定用户修改Python版本,只需要在其home目录下创建一个alias。打开该用户的~/.bashrc文件:添加新的别名来修改默认Python版本:重新登录或者重新加载.bashrc文件,使操作生效:检查当前的Python版本:3 系统
2022-06-23 15:23:23
3963
原创 linux 下定时器 timer_settime
一、创建 定时器 - timer_create 二、开始 定时器 - timer_settime 三、重置定时器 四、取消定时器 五、删除定时器timer_settime 设置 it_interval 和 it_value 的值:三、重置定时器timer_settime 重新设置 it_interval 和 it_value 的值:timer_settime 设置 it_interval 和 it_value 为零:............
2022-06-06 16:24:35
5857
原创 C 使用 dlopen 调用库中函数
1、打开方式:#include <dlfcn.h>void* native_handle = dlopen("/lib/libnative.so", RTLD_GLOBAL | RTLD_LAZY);if (!native_handle){ printf("In %s: Cannot open libnative.so, error: %s\n",__FUNCTION__, dlerror());}// 关闭库;int result = dlclose(nati
2021-10-15 15:33:15
649
原创 QT 源码分析 - exec 函数
目录一、exec() 简介:二、QDialog::exec()三、QCoreApplication::exec()四、QEventLoop 的 exec()一、exec() 简介:1、说明:事件循环,首先是一个无限 “循环”程序在 exec() 里面无限循环,能让跟在 exec() 后面的代码得不到运行机会,直至程序从 exec() 跳出其次,之所以被称为“事件”循环,是因为它能接收事件,并处理之。当事件太多而不能马上处理完的时候,待处理事件被放在一个“队列”里
2021-04-11 17:54:57
5580
原创 C++如何判断一个程序是 死锁 还是 死循环,如何进行问题定位与分析
目录一、初步诊断:1、死循环:2、死锁:二、进一步定位分析:1、初步诊断为 死循环 时,可转存为 Dump 进行分析2、死锁 情况就比较复杂:三、、代码与图示:1、死循环:2、死锁:一、初步诊断:通过 ‘任务管理器’ 查看软件的状态 与 CPU 使用情况1、死循环:软件状态:未响应CPU:一直保持非0,处于活跃状态原理:如果主线程出现死循环,那么windows将不能从消息队列中取出消息,并进行处理,所以出现卡死现象。为了验证是这个原因导致
2021-04-11 12:06:48
7159
1
原创 Qt WebEngine 实战 - 仿制浏览器(加载进度、放大、缩小、前进、后退、网站图标、历史记录、页面查找)
目录一、成果展示二、功能拆解:0、网页加载逻辑1、在标题栏,显示加载进度2、 放大、缩小、重置3、 前进、后退、刷新4、 获取网站图标5、显示历史记录,提供显示与跳转功能6、界面内查找:三、完整工程代码:一、成果展示QT 仿制浏览器,实现功能如下:1、获取网址时,在标题栏,显示加载进度2、查看:界面的 放大、缩小、重置 功能3、界面导航功能:前进、后退、刷新 功能4、获取网站图标5、显示历史记录,并提供跳转功能6、界面内查找:在当前界
2021-03-31 10:56:37
3080
3
原创 QT 线程,实现生产者-消费者模式
一、两种启动线程方式:1、QThread2、QObject::moveToThread() 函数可以让 调用者的 槽中的代码,在单独的线程执行。注:如果该对象有 父对象,那么它无法被移动。二、线程同步①、QMutex:互斥锁②、QReadWriteLock读写锁的功能。读写锁是用来保护可以被读访问和写访问的资源的一种同步工具。如果你想让多个线程同时的对资源进行读访问,但只要有一个线程要对资源进行写访问时,所有其他的线程必须等待,直到...
2021-03-30 19:22:33
1879
原创 QT 进程间通信,使用共享内存写入读取数据
目录一、进程间通信的方式:1、TCP/IP2、共享内存3、D-Bus4、QProcess5、管道二、QSharedMemory 的使用一、进程间通信的方式:1、TCP/IP如:QNetworkAccessManager、QTcpSocket、QTcpServer、QSslSocket2、共享内存QSharedMemory 跨平台的共享内存类3、D-BusQt D-Bus 模块是一个 Unix 库,可以使用 D-Bus 协议来实现进程间通信。它将 Q
2021-03-30 15:35:44
1380
原创 QProcess 获得 ping 后的结果 || 调用其他 exe 获取其输出信息
目录一、QProcess 简述:二、QProcess 函数与应用1、连接信号槽函数2、启动 Process2'、调用其他 exe2''、其他 exe 的输出写法:3、读取 其他程序的输出结果信息:4、其他槽函数信息:5、结果展示:一、QProcess 简述:QProcess 可以启动其他进程 exe 软件,那么在本进程中,可否获得其他进程 (exe) 的输出信息吗?答案是可以的,如何做呢?我们来看一下:二、QProcess 函数与应用1、连接信号槽函数
2021-03-30 15:12:10
1410
转载 图解:Ping 命令的工作原理
目录一、ping 命令使用的是 ICMP 协议二、ping —— 工作原理分析1、打个 ICMP 数据包 - 网络层2、打个 IP 数据包 - 网络层:3、加入 Mac 头信息 - 数据链路层4、接收端 拆解包:物理层-数据链路层-网络层5、接收端 构建响应包,返回给发送端6、整体流程图三、IP协议的助手 —— ICMP 协议1、 ICMP 是什么2、ICMP 功能都有什么3、ICMP 包头格式4、ICMP 包头的类型 之 查询报文类型5、ICMP 包
2021-03-26 17:02:16
13737
3
原创 各种编码格式的区别:ASCII,Latin1,Unicode,UTF-8与GBK
目录1.ASCII编码2.Latin1编码3.Unicode编码4.UTF-8编码5. GBK编码1.ASCII编码 ASCII码实现的是大小写英文字母,阿拉伯数字,及常用的标点符、运算符、控制字符(换行、删除等)和通信字符(文头、确认等)与计算机编码之间的对应。ASCII编码采用单字节(8 Bit)存储,实际数据存储空间是7 Bit,最高位的1 Bit是奇偶校验位。ASCII 编码对于 英语 国家足够用了,但是却无法表达非英语国家字符到计算机编码之间的映射,如中文...
2021-03-23 17:38:25
6916
原创 QT 录制音频(麦克风、系统)
目录一、成果展示:二、代码三、录制系统声音一、成果展示:二、代码1、main.cpp#include "myaudiorecorder/AudioWidget.h" int main(int argc, char *argv[]){ QApplication a(argc, argv); AudioWidget w; w.show(); return a.exec();}2、AudioWidget.h#ifndef AUDIO
2021-03-17 11:05:32
3634
4
原创 QT 使用摄像头显示画面 并 拍照
一、前置说明限制:QT 相机 QCamera:只提供了有限的相机支持,如 取景器显示 和 拍照功能,大部分相机控制功能没有实现。在 win7 上,无法用 QCamera 实现 视频录制功能使用的类的说明:QCamera 类用于打开系统的摄像头设备,QCameraViewfinder 用于显示捕获的视频,QCameraImageCapture 用于截图。二、成果展示:三、代码1、main.cpp#include "myaudiorecorder/Aud
2021-03-17 10:46:22
6368
3
原创 QT 使用OpenGL 进行 3D 绘图
目录一、成果展示:二、代码展示:1、main.cpp2、MyGLWidget.h3、MyGLWidget.cpp三、编译错误 解析:1、gluPerspective 和 gluLookAt 找不到标识符2、error: LNK2019: 无法解析的外部符号 __imp_glBegin等一、成果展示:二、代码展示:1、main.cpp#include <QtWidgets/QApplication>#include "myglwidget.
2021-03-16 16:28:09
1861
原创 QT 自定义拖放操作,拖拽时 显示图片,且给原图片加阴影
1、要点:1、鼠标在移动过程中显示图片2、拖动时鼠标指针在图片的位置不变3、拖拽图片时,给原图片添加阴影2、MainWindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui { class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic:.
2021-03-10 16:10:46
999
原创 有人推荐使用 C++前置声明,有人不推荐使用,理由在哪?
1、前置声明是C/C++开发中比较常用的技巧,主要用在三种情形:1>、变量/常量,例如 extern int var1;2>、函数,例如 void foo();注意类的成员函数无法单独做前置声明;3>、类,例如 class Foo;,也可以前置声明模板类:template class<typename T1, int SIZE>Foo;如果类包含在名字空间中,需在名字空间内做前置声明:namespace tlanyan {class Foo;};,而不
2021-03-09 15:17:15
669
原创 Qt 中 无法根据鼠标移动事件(mouseMoveEvent 无效)
一、setMouseTracking在Qt中要捕捉鼠标移动事件需要重写 MouseMoveEvent,但是 MouseMoveEvent 为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到,需要setMouseTracking(true)这个属性保存的是窗口部件跟踪鼠标是否生效。1、如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件。2、如果鼠标跟踪生效,如果没有按键被按下,这个窗口部
2021-02-22 17:39:03
5556
3
原创 QT 自定义日历插件
一、说明:自定义农历控件:1:可设置边框颜色/周末颜色/角标颜色/农历节日颜色2:可设置当前月文字颜色/其他月文字颜色/选中日期文字颜色/悬停日期文字颜色3:可设置当前月农历文字颜色/其他月农历文字颜色/选中日期农历文字颜色/悬停日期农历文字颜色4:可设置当前月背景颜色/其他月背景颜色/选中日期背景颜色/悬停日期背景颜色5:可设置三种选中背景模式,矩形背景+圆形背景+图片背景6:可直接切换到上一年/下一年/上一月/下一月/转到今天7:可设置是否显示农历信息,不显示则当做正常的日历使用.
2021-02-22 16:57:26
1085
1
原创 与运算(&)、或运算(|)、异或运算(^)的本质 及 用途,文末附加 位运算面试题
一:与运算符(&)and1、运算规则:0&0=0;0&1=0;1&0=0;1&1=1即:两个同时为1,结果为1,否则为02、例如:3&5十进制3转为二进制的3:0000 0011十进制5转为二进制的5:0000 0101------------------------结果:0000 0001 ->转为十进制:1即:3&5 = 13、用途:1)判断 奇偶性一个数 and 1 的结果就是取二进制的
2021-01-29 17:10:41
15666
原创 十进制、八进制和十六进制,各种进制存在的意义,为什么要设计出来?
一、表示方法1、八 进制定义:一种以8为基数的计数法,采用 0,1,2,3,4,5,6,7八个数字,逢八进1。编程中如何表达:所以规定,一个数如果要指明它采用八进制,必须在它前面加上一个 0(零),如:123 是十进制,但 0123 则表示采用八进制。这就是八进制数的表达方法。2、十六 进制定义:它由 0-9,A-F 组成,字母不区分大小写。与 10 进制的对应关系是: 0-9 对应0-9; A-F 对应 10-15。N进制的数可以用 0~(N-1) 的数表示,超
2021-01-28 18:02:50
9528
原创 Qt 枚举变量的高阶技巧 - 枚举值和字符串之间的相互转换 - Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS
一、引用 枚举值宏 所解决的问题:1、Q_ENUM能够轻松完成枚举量和字符串之间的相互转化。枚举参数显示的是 int 类型,如:3。3 这个信息对于我们 调试或打印日志 很不友好。在方法内,我们并不知道这个 3 代表的是什么。为了解决这个问题,有了个很有用的特性:Q_ENUM2、Q_FLAG弥补 C++ 中结构体 无法组合使用,和 缺乏类型检查 的缺点,可以 拥有多个身份,如:enum Roles{ Admin = 1, Member = 2}上述定义了
2021-01-27 16:01:41
594
原创 QT 制作 gif 录屏 小工具
一、说明:不断地截取 选中的区域,然后将其制作成 gif 动图。二、效果图:1、可设置要录制屏幕的宽高,支持右下角直接拉动改变.2、可设置变宽的宽度3、可设置录屏控件的背景颜色4、可设置录制的帧数5、录制区域可自由拖动选择三、代码:1、main.cpp#pragma execution_character_set("utf-8")#include "gifwidget.h"#include <QApplication>#include <QTe
2021-01-26 14:52:02
452
1
原创 Qt 判断 是否 能连接到 互联网
第一种方法:可行 - 但受限于 QT 版本<QNetworkConfigurationManager>类QNetworkConfigurationManager mgr;if(!mgr.isOnline()){ qDebug() << "没有连接网络";}else{ qDebug() << "当前已联网";}【注意】:此种方法在一些版本上不能适用,版主 测试通过 版本: QT5.12.5第二种方法:不可用<QH..
2021-01-13 15:36:55
2560
1
原创 QStringList 与 QString 的相互转化
一、QStringList 转化成 QString - 使用 join 函数join 函数将 QStringList 中的所有字符串用一个分隔符连接起来变成一个字符串。例:strlist中有5个字符串,使用join将它们连起来,以逗号作为分隔符。结果为:这个在组sql语句时还挺有用的,值得一提的是分隔符还支持空格。二、QString 转化成 QStringList - 使用 split 函数join 函数是将 QStringLis t转为 QString,split 就是和.
2021-01-08 10:55:36
17058
原创 Qt 使用 QSS 对控件进行渐变处理 - qlineargradient线性渐变
前言:QT 一共支持三种渐变处理qlineargradient (线性渐变)qconicalgradient(圆锥渐变)qradialgradient(辐射渐变)1)QlineargradientsetStyleSheet("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 rgba(255,0,0,255),stop:0.5 rgba(0,255,0,255),stop:1 rgba(0,0,
2021-01-07 15:44:00
923
原创 Qt 与 JavaScript 网页端 通信和调用
前言主要使用 QWebEngineView 与 QWebChannel 来实现于 JavaScript 的交互【注】:需要 qwebchannel.js 文件,放在 .html 文件 同级目录下一、Qt 与 JS 交互:1、main.cpp#include "QtBaiduMapDialog.h"#include "QtJavascriptCommunication.h"#include <QtWidgets/QApplication>#include &.
2021-01-07 15:11:49
683
Qt WebEngine 实战 - 仿制浏览器
2021-03-31
lunarcalendarwidget.rar
2021-02-22
devicesizetable.rar
2020-09-28
dbpage.rar
2020-09-27
comtool.rar
2020-09-25
quazip-0.7.3.zip
2020-08-24
QT5.12.5 TLS initialization failed
2019-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人