- 博客(801)
- 资源 (21)
- 收藏
- 关注
原创 C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享
介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。
2023-09-21 23:00:33 3408
原创 C++ Qt进程间通信机制之QRO、QRemoteObjectHost
Qt高级开发视频教程C++零基础入门视频教程PyQt PySide6零基础入门与项目实战本篇博客介绍使用QRO实现Qt应用程序进程间通信。本篇博客代码在Qt5.15.2测试通过,可用。一般谈到进程间通信,都是共享内存,消息队列,socket等,本篇博客介绍的QRO也就是QRemoteObjectHost是Qt基于socket封装的进程间通信技术,并且加入了Qt信号机制,比其它基于socket的进程间通信技术更灵活。
2024-08-30 22:17:54 1391
原创 qml ChartView实现动态数据曲线
本篇博客介绍使用qml实现动态数据曲线,效果图如下:本篇博客代码通过C++ Qt5.15.2测试,可用。下面详细介绍实现过程。
2024-08-15 21:59:31 367
原创 qml教程:qml视频播放组件介绍
使用ThresholdMask或其它技术进行实时视频处理,在实际开发中有很多应用,例如在视频聊天应用中对背景进行模糊处理或替换背景,或者在视频监控中进行运动检测和区域监控。它属于 Qt Graphical Effects 模块,通过使用高效的模糊算法,对图像或组件进行模糊处理,适用于需要实时渲染和高性能的场景。在QML里,MediaPlayer 是用于播放音频和视频文件的组件。上面的QML 代码中使用了 ThresholdMask 组件对视频帧进行二值化处理,并使用另一个图像作为掩模源来控制二值化的效果。
2024-08-02 23:34:41 214
原创 CMake教程:C++ CMake自定义find_package并在其它项目使用
find_package 是 CMake 中一个非常重要的命令,用于在系统中找到外部库或包,并将其包含到项目中。: 要查找的包的名称。[version]: 可选的版本号。如果指定了版本号,CMake 会尝试找到该版本或更高版本的包。[REQUIRED]: 如果指定了这个关键字,找不到包时会产生一个错误并终止配置过程。: 指定要查找的包的组件。: 指定可选的组件,即使找不到这些组件,配置过程也会继续。: 指定查找包的模式,CONFIG表示查找配置文件,MODULE表示查找模块文件。
2024-07-22 22:22:57 378
原创 Qt Quick qml自定义控件:qml实现电池控件
电量条使用矩形Rectangle来表示,用Repeater重复绘制10个矩形即可。在main.qml中使用定时器模拟电量数值,在实际开发中,需要接入实际的数值。以上代码在Qt6.7.1通过测试测试。
2024-07-14 16:07:27 529
原创 快速UDP网络连接之QUIC协议介绍
这个算法在多媒 体网关拥塞控制有重要的地位。QUIC的FEC是使用的XOR的方式,即发N + 1个包, 多发一个冗余的包,在正常数据的N个包里面任意一个包丢了,可以通过这个冗 余的包恢复出来,使用异或可以做到切换网络操持连接。由于原始包和重传包的序列号是一样的,客户端不知道服 务器返回的 ACK 包到底是原始包的,还是重传包的。新的传输层协议通常会经过严格的设计,分析和评估可重复的结果,证明候选协议对 现有协议的正确性和公平性,开发新的传输层协议和它在操作系统进行广泛部署之间 通常需要花费数年的时间。
2024-06-16 15:01:14 1968
原创 webrtc新版本无法连接peerconnection_server、无法音视频互通no incoming video...问题解决
在webrtc大概2022之后的版本,会出现无法连接peerconnection_server的现象,如下图:在peerconnection_client界面点击Connect无法连接server.
2024-06-14 21:56:58 360
原创 C++ Qt实现http url启动本地应用程序
如果是实际开发,在项目发布制作安装包时,可以使用NSIS或Inno Setup等打包工具将上面的注册表信息写到打包脚本里,当用户双击安装应用程序时,就会将上述信息写到注册表,上面路径需要替换为你的实际应用程序安装的路径。特别注意:应用程序的反斜杠别搞错了!!!自己测试的话双击register_protocol.reg文件,将信息导入注册表。
2024-06-05 18:20:12 456
原创 webrtc vp8/9视频编解码介绍
在WebRTC中,VP8和VP9用于视频通信。由于WebRTC的开放性和对开源格式的支持,这些编码被广泛采用。VP9由于其更高的压缩率和对高分辨率视频的支持,越来越受到青睐,尤其是在带宽较低但需要高视频质量的应用场景中。选择VP8还是VP9通常取决于特定应用的需求,包括对带宽的需求、视频质量的要求、以及客户端硬件的编解码能力。VP9虽然提供了更好的性能,但其编解码过程可能对计算资源的需求更高,这在一些老旧设备上可能是一个考虑因素。
2024-06-04 16:51:47 1196 1
原创 linux c socket编程里SO_REUSEADDR的作用
这段代码的主要作用是设置 SO_REUSEADDR 选项,以允许在套接字处于 TIME_WAIT 状态时,其他套接字可以绑定到相同的本地地址和端口。这在服务器应用程序中特别有用,可以减少由于端口占用导致的启动失败问题。如果设置失败,代码会记录错误信息。在这个示例中,套接字创建成功后,使用 setsockopt 设置 SO_REUSEADDR 选项,以便允许地址重用。如果 setsockopt 调用失败,程序会输出错误信息并终止。setsockopt 函数用于设置套接字选项。
2024-06-03 20:24:13 424
原创 C++ CMake FetchContent用法介绍
CMake 的 FetchContent 模块是一个非常方便的工具,用于在构建过程中从远程位置下载和管理外部依赖项。通过 FetchContent,您可以在项目的 CMake 配置过程中下载、提取和添加外部项目,而不需要手动管理这些依赖项。
2024-06-03 09:12:58 1443
原创 C++线程任务队列模型
这个程序实现了一个简单的任务队列,其中任务类表示一个可执行的任务,具有状态(未开始、进行中、已完成)。任务队列类负责管理任务的添加和执行,执行方式为串行执行。每个任务的执行时间是随机的,并且在执行过程中会输出当前的进度信息。在任务队列中添加2个任务并执行,所有任务完成后退出程序。串行任务队列开始执行,共有2个任务。实现一个任务队列,用于任务的执行。任务1开始执行,将运行3秒。任务2开始执行,将运行2秒。串行队列执行输入示例如下。任务1已完成100%任务2已完成100%
2024-05-29 01:15:16 290
原创 C++实现生产者消费者模型
生产者-消费者模型是一种典型的多线程并发模式,常用于在一个共享缓冲区中协调生产者和消费者之间的数据传递。在C++中,我们可以使用标准库中的线程、互斥量和条件变量来实现该模型。
2024-05-29 01:11:36 699
原创 Windows hook介绍与代码演示
Windows Hook 是一种机制,允许应用程序监视系统或处理特定事件。它可以拦截和更改消息,甚至可以插入到其他应用程序的消息处理机制中。Windows 提供了多种挂钩类型,例如键盘挂钩、鼠标挂钩、消息挂钩等。
2024-05-28 23:02:32 817
原创 ubuntu strace命令
是 Linux 系统中的一个调试工具,用于跟踪并记录系统调用(system calls)和信号(signals)。在 Ubuntu 中,命令可以帮助开发者和系统管理员了解一个程序在运行时如何与操作系统内核进行交互,从而有助于诊断和调试问题。,可以深入了解程序的运行过程,找到并解决潜在的问题。例如下面的C++程序。
2024-05-28 21:23:22 582
原创 go代码运行报错go_test3\main.go:14:2: package test3/mymath is not in std
在使用vscode运行go代码时报错。用goland应该不会有这种问题。
2024-05-01 13:57:02 329
原创 docker学习笔记4:CentOS7安装docker
docker的命令比较多,在后续博客继续介绍docker的相关命令。在centos终端中配置,执行上面提供的4条命令。点击控制台,找到【容器镜像服务】查看docker进程。
2024-04-30 02:35:06 627 1
原创 docker学习笔记3:VmWare CentOS7安装与静态ip配置
本专栏的docker环境是在centos7里安装,因此首先需要会安装centos虚拟机。本篇博客介绍如何在vm虚拟机里安装centos7。
2024-04-30 02:22:36 498 1
原创 docker学习笔记5:Docker Compose安装与使用
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个 YAML 文件来配置应用服务,这样可以通过一个简单的命令创建和启动所有服务。Docker Compose 主要面向开发环境、自动化测试环境和小型生产部署。
2024-04-29 23:23:25 292
原创 docker学习笔记8:centos docker安装redis
如果你有自定义的 Redis 配置文件,可以将其映射到容器中。首先,确保你的配置文件在宿主机上,例如这样可以让 Redis 使用你提供的配置文件启动。按照这些步骤,你可以在 CentOS 系统上利用 Docker 快速、轻松地部署 Redis。这些步骤主要适用于开发和测试环境;对于生产环境,还需要考虑额外的安全和性能配置。
2024-04-29 23:20:19 336 1
原创 docker学习笔记1:什么是docker
Docker 是一个开源的应用容器引擎,它允许开发者打包应用以及应用的运行环境到一个可移植的容器中,然后发布到任何支持 Docker 的平台上运行。这种打包方式称为容器化(Containerization)。容器化允许你在不同的环境中以一致的方式运行应用程序,解决了“在我的机器上可以运行”的问题。
2024-04-29 23:12:08 570
原创 python lambda表达式的用法
Python 中的 lambda 表达式是一种用于创建小型匿名函数的方式。这些函数是即时定义的,没有名字,可以用在任何需要函数的地方。lambda 函数可以有任意数量的参数,但只能有一个表达式。这个表达式的计算结果会被自动返回。lambda 表达式通常用于简单的函数,特别是在你需要传递一个小函数作为参数时非常有用。
2024-04-24 22:16:29 318
原创 C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
QMainWindow相对于QWidget多了dockedwidget功能,跟多人可能更喜欢用QMainWindow做主窗口,如果不需要dockedwidget功能,QMainWindow与QWidget做主窗口基本无差别。这里使用的是DWM API实现窗口阴影和圆角,圆角是windows窗口的圆角,不需要手动设置圆角大小。(1)在CFramelessWindowBase类设置窗口标志,去掉窗口边框,设置最大最小显示效果。(3)重写nativeEvent实现无边框窗口。自带窗口阴影、圆角、可拉伸,拖拽。
2024-04-24 14:40:04 1501
原创 C++如何把图片转成base64数据
在C++中将图片转换为Base64格式涉及几个步骤,主要是读取图片文件的二进制数据,然后将这些数据编码为Base64字符串。这个过程通常需要用到额外的库来辅助完成,例如使用开源库如OpenSSL来进行Base64编码,以及使用标准库来处理文件输入输出。运行程序之前,确保修改文件路径为实际图片文件的路径。这个程序将输出Base64编码的字符串,可用于网页显示或其他需要Base64编码的场景。首先,确保你的系统中安装了OpenSSL库。
2024-04-15 21:27:32 335
原创 C++实现读写锁
在C++中,实现读写锁可以使用,它是C++17标准中引入的。读写锁允许多个线程同时读取一个共享资源,但在写入时,只允许一个线程对资源进行写入,并阻止其他线程读取或写入。下面是使用实现读写锁的示例代码,包括一个简单的共享数据访问类和在mainSharedDatareadDatawriteDatamain替换和为你的文件名和希望生成的程序名。这段代码在一个多线程环境下测试了读写锁的工作方式。
2024-04-07 08:15:00 1127
原创 PyQt PySide6零基础入门与项目实战视频教程
深入PySide6中的常用控件与界面布局技巧,通过丰富的实例,掌握PySide6的窗口、布局、控件等核心内容。主要介绍QLabel、QPushButton、QLineEdit、QCheckBox、QComboBox、QTextEdit、QTextBrowser、QListView与QListWidget、QStackedWidget、QTabWidget、QTableView等控件以及水平垂直布局,弹簧控件,栅格布局,表单布局。教你如何使用样式表美化应用界面,并创建独特的自定义控件。
2024-04-07 08:00:00 1295
原创 C++手写链表、反转链表、删除链表节点、遍历、为链表增加迭代器
本篇博客介绍如何使用C++实现链表,首先编写一个简单的链表,然后增加模板,再增加迭代器。
2024-03-15 21:39:59 1390
原创 Python json解析
在Python中解析JSON(JavaScript Object Notation)非常简单,标准库中的json模块提供了必要的功能。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
2024-02-12 11:54:16 996 1
原创 C# ICloneable的特点及其用法
在C#中,ICloneable是一个接口,用于定义允许一个对象创建自身的精确副本,即“克隆”的能力。ICloneableClone,该方法在实现时应该返回当前对象的一个副本。这里是ICloneable。
2024-02-12 11:53:42 798
原创 python异常与自定义异常
你还可以通过继承Exception类来定义自己的异常类型。这在需要创建特定于你的应用程序的错误类型时非常有用。passtry:e } ")e } ")现在让我们创建一个自定义异常。我们将定义一个和一个,这两个异常将在用户输入的数字不在指定范围内时抛出。# 自定义异常类pass # 可以添加额外的功能或属性pass # 可以添加额外的功能或属性# 我们的数字猜测游戏函数raise ValueTooSmallError("这个数字太小了。")
2024-01-31 13:31:34 854
原创 python循环控制if、 for、while、break、continue、pass
Python中的if语句是用于基于条件执行代码的控制流语句。它允许程序根据一个或多个条件的真假来决定执行哪个代码块。以下是ifif这里,如果x > 5的条件为真,则执行缩进的代码块。if-else如果if条件为真,则执行第一个代码块,否则执行else后的代码块。在这个例子中,如果x大于10,则执行第一个代码块,如果x大于5但不大于10,则执行第二个代码块,否则执行最后的else代码块。if这里首先检查x是否大于10,如果条件为真,则进入下一个if语句检查x是否是偶数。这是一个简洁的方式,用于在一行中执行。
2024-01-31 13:31:11 1377
原创 go闭包使用教程
在Go语言中,闭包(Closure)是一种特殊的函数,它可以捕获其创建时所在作用域中的变量。闭包通常与匿名函数一起使用,匿名函数可以访问并操作不在其参数列表中的外部变量。
2024-01-27 09:44:22 1200
原创 C#设计模式教程(24):访问者模式
访问者模式是一种行为设计模式,它允许你在不修改已有类的情况下,增加新的操作。这是通过创建一个外部的访问者类来实现的,它实现了对组件类每一个具体元素的操作。
2024-01-25 08:15:00 179
原创 C#设计模式教程(23):模板方法模式
模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中实现。这样可以在不改变算法结构的情况下,在子类中重新定义算法的某些特定步骤。
2024-01-25 07:30:00 184
C++ QMainWindow无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
2024-04-23
Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送
2022-02-22
c++ PImpl实现机制
2021-09-15
很全的 Qt qss
2020-09-29
jsoncpp_sdk_x64.rar
2020-04-06
支持向量机通俗导论(理解SVM的三层境界)PDF
2018-04-13
C# TCP网络通信示例:多人聊天发文件
2018-04-02
C++/OpenCV2.4.9 数字精确识别源码
2017-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人