自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C++/Qt/音视频/WebRTC

寒江孤影,江湖故人,相逢何必曾相识

  • 博客(585)
  • 资源 (20)
  • 收藏
  • 关注

原创 C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享

介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。

2023-09-21 23:00:33 194

原创 Qt6 TabView用法

TabView是 QML 中的一个组件,用于创建带有多个标签页的界面。每个标签页都有自己的内容,并且用户可以点击标签来切换不同的内容视图。不过在Qt6中不在支持TabView, TabBar 和 StackView 来模拟 TabView 的功能。

2023-09-21 00:47:20 43

原创 qml GroupBox用法介绍

是 QML 中的一个组件,用于为其内容提供一个带标题的框架。它可以用来组织和区分界面中的相关内容。在这个例子中,我们创建了一个标题为 “User Information” 的。提供了一个明确的视觉边界,使得用户可以知道这些控件是相关的。的属性来自定义其外观和行为,例如更改标题、颜色、大小等。

2023-09-21 00:28:41 38

原创 qml ProgressBar用法介绍

你可以通过修改backgroundprogress等。width: 300height: 30value: 0.6radius: 15radius: 15上述示例中,我们自定义了的背景为lightgray色,并将进度条的颜色设置为green。这只是的一些基本用法。在实际应用中,你还可以结合其他 QML 组件和属性来创建更丰富的交互和外观效果。希望这些示例能帮助你理解和使用。

2023-09-21 00:25:00 48

原创 qml Combobox用法介绍与代码演示

除了使用textRole外,你还可以使用delegate来自定义下拉项的显示。ComboBox {height: 40height: 30Text {在这个示例中,我们使用delegate自定义了下拉项的显示方式,并为每个项添加了一个背景色。这只是ComboBox的一些基本用法。在实际应用中,你还可以利用其他属性和方法来实现更多的功能和自定义选项。希望这些示例能帮助你理解和使用ComboBox。

2023-09-21 00:15:44 40

原创 qml Textinput 、TextField、TextEdit、TextArea用法介绍

是 Qt Quick Controls 2 中的一个高级控件,它提供了一个更为完整的用户界面,包括边框、背景、图标等。它是为了更好的桌面和移动设备体验而设计的。元素中,你不能直接设置一个边框属性,因为它主要用于纯文本输入并且没有提供直接的视觉样式。然而,你可以通过组合使用其他元素,如。是 Qt Quick 中的一个简单的文本输入控件,它可以显示和编辑单行纯文本。它是低级别的,通常没有图形化的边框或其他装饰。模块,并确保你的项目配置正确地链接了这个模块。属性提供一个小的内边距,以防止文本紧贴边框。

2023-09-20 23:36:10 57

原创 解决qml编译时出现错误ninja: build stopped: subcommand failed.

如果有类似的报错,可以检查一下qml代码是否有问题。当然在Qt Creator里也没有错误提示,很坑。解决这个编译错误其实很简单,我把。

2023-09-20 23:25:25 43

原创 qml布局管理器介绍与代码演示

Qt Quick中的布局管理器与Qt Widgets中的相似,它与定位器的不同之处在于:布局管理器会自动调整子Item的尺寸来适应界面大小的变化。

2023-09-19 21:41:22 53

原创 QML元素定位器:Row、Colum、Grid、Flow、定位器嵌套以及Repeater用法

是的,model是Repeater的一个属性。这个属性定义了Repeater应该重复的数据模型。一个数字,表示要重复的次数。一个列表模型,如ListModel。一个数组,如。其他 QML 数据模型,如等。在给出的示例中,model属性被设置为一个字符串数组,这意味着Repeater将为数组中的每个字符串创建一个组件实例。在这种情况下,你可以使用modelData属性来访问当前条目的数据。

2023-09-19 00:19:27 60

原创 qml信号处理

在进行PC客户端开发时,经常要处理信号、事件、消息,在qml里如此,本节来介绍qml里的一些事件处理技巧.

2023-09-17 21:43:19 144

原创 qml语法介绍

​ qml一个普通的文本文件,后缀是.qml, 一个qml文件主要由两部分组成:(1) import语句 :这个就像C++中的头文件, 使用 import 导入qml需要的相关模块,可以查询Qt文档进行导入,注意每个版本的Qt模块声明可能都不同,相比于QWidget项目,QtQuick的变动是很大的;(2) QML对象树 :根对象是Window, 然后可以在Window中添加各种控件,例如按钮,文本,菜单等。

2023-09-17 21:15:30 59

原创 qml怎么显示网页

注意:Qt自带的WebEngine无法播放视频,CEF也一样,如果需要播放网页中的视频,则需要自己编译Qt WebEngine模块,编译很麻烦,特别容易出错。如果你使用的是Qt的在线安装程序,你可以通过Qt Maintenance Tool来添加这个模块。确保在部署应用程序之前进行充分的测试,以确保网页内容在所有目标平台上都能正确显示。来显示网页的简单示例,显示我的Qt视频教程页面。组件,可以用来在QML中显示和交互网页。以下是如何在QML中使用。QML显示网页需要使用。首先,确保你已经安装了。

2023-09-14 22:12:26 72

原创 qml ApplicationWindow使用介绍与代码演示

是 QML模块中的一个元素,用于创建一个包含导航栏、工具栏和其他常用 UI 元素的顶级窗口。在 Qt Quick Controls 应用程序中,通常会使用它作为主要的窗口元素。在使用时需要包含下面是title:设置窗口的标题。width和height:定义窗口的初始宽度和高度。visible:决定窗口是否可见。menuBar:定义窗口的菜单栏。statusBar:提供一个状态栏来显示信息。toolBar:在窗口的顶部或底部定义工具栏。:包含窗口的主要内容,通常是其他 QML 元素或组件。

2023-09-14 21:51:04 159

原创 qml嵌入到QWidget的两种方式介绍

本文介绍qml页面嵌入到QWidget的两种方式,以及这两种方式的区别。

2023-09-12 00:22:58 141

原创 QML、C++ 和 JS 三者之间的交互

如前面所述,您可以在 QML 文件中直接使用内联 JavaScript 代码或从外部 JS 文件中导入 JS 函数。这些是 QML、C++ 和 JS 三者之间交互的基本方式。根据您的需求,您可以深入探索并结合它们以满足您的应用需求。QML、C++ 和 JS 三者之间的交互是 Qt Quick 应用开发的核心。您可以在 C++ 中发射一个信号,然后在 QML 中连接并处理这个信号。要从 QML 调用 C++ 函数,您可以使用 Qt 的 QML 注册机制,例如。的函数,并在 QML 或 JS 中使用这些数据。

2023-09-12 00:10:51 636

原创 qml调用js代码演示

QML 是 Qt 的标记语言,用于创建界面。QML 中可以很容易地引用 JavaScript 代码,用于逻辑处理。

2023-09-12 00:06:58 122

原创 一文搞懂qml画布Canvas、路径绘制、文本绘制、图片绘制、基本变换、缩放变换

Canvas所有的绘图都在onPaint中进行,并且Canvas是透明的,默认没有背景色.

2023-09-11 23:38:52 38

原创 google c++线程、协程、任务调度marl库使用介绍

Marl 是一个 C++ 用于多线程并发和异步编程的库。Google 开发了 Marl,旨在为现代 CPU 提供高效的任务调度和同步。Marl 与其他线程库的主要区别在于它的任务调度器,该调度器可以动态地在可用的核心之间分配任务,而不需要为每个任务分配一个专用线程。这使得 Marl 可以在高并发下仍然具有高效性。

2023-09-06 23:31:44 86

原创 python类的属性和实例的属性有什么区别

注意:如果尝试通过实例修改类属性,实际上你可能会在该实例上创建一个新的实例属性,而不是修改类属性。这可能会导致意外的行为和混淆,所以通常建议不要这样做。在 Python 中,类属性和实例属性是两种不同类型的属性,它们在用途和作用域上有所不同。总的来说,类属性是共享的,而实例属性是独立的。理解这两者之间的区别对于避免在面向对象编程中出现常见的错误是很重要的。

2023-09-01 22:24:04 173

原创 python print格式化输出

前缀开始的字符串表示格式化字符串字面量,通常称为 “f-string”。从 Python 3.6 开始引入,它们是一种在字符串中嵌入表达式的新方法。这些表达式在运行时会被评估,然后使用。f-string 提供了一种简洁且可读性强的方式来嵌入和格式化字符串中的表达式。f-string 还支持各种复杂的表达式和格式化选项。是占位符,它们在运行时被。在 Python 中,以。将它们插入到字符串中。

2023-09-01 18:12:34 143

原创 docker的运行原理

这些技术组合在一起,使 Docker 在 Linux 内核上能够提供轻量级、快速、隔离的环境来运行应用程序。Docker 是一个开源的容器化技术,它能够让开发者将应用及其依赖打包到一个轻量级的、可移植的容器中,这个容器可以在几乎任何机器上一致地运行。: 容器是一个轻量级的、独立的、可执行的软件包,其中包括运行应用所需的一切:代码、运行时、系统工具、库和设置。: Docker 镜像是一个轻量级、独立的、可执行的软件包,包含运行应用的所有内容,包括代码、运行时、系统工具、库和设置。它是创建容器的基础。

2023-09-01 18:01:51 1151

原创 docker基本命令记录

Docker 是一个开源的容器技术,它允许开发人员将应用程序及其所有依赖项打包到一个容器中,然后轻松地在任何地方部署和运行。这只是 Docker 基本操作的摘要。Docker 提供了大量的命令和选项来管理容器、镜像、网络和数据卷。要深入了解,建议参考 Docker 的官方文档。

2023-09-01 17:56:28 980

原创 C++异常介绍与自定义异常

在C++中,自定义异常通常意味着定义一个新的异常类。这个类通常继承自标准库的异常类,例如。定义异常类:创建一个新的类,继承自或其他相关的异常类。提供异常消息:覆盖what()函数,这样当异常被捕获并处理时,可以提供一个描述性的错误消息。抛出自定义异常:在代码的适当位置使用throw关键字抛出自定义的异常。捕获自定义异常:使用try-catch语句块来捕获和处理异常。// 1. 定义异常类private:public:// 2. 提供异常消息try {// 某些条件触发异常。

2023-08-25 00:15:06 107

原创 C++ VS2022使用gRPC

在2022年前,gRPC是一个受欢迎的RPC框架,允许应用程序在不同的环境中进行通信。gRPC是基于Google的Protocol Buffers作为接口定义语言的,它支持多种编程语言,其中之一就是C++。(Microsoft推出的C++包管理器)来简化安装gRPC的过程。这是gRPC的核心部分,它描述了要执行的远程调用和这些调用所使用的数据结构。希望这些基本的步骤和建议能够帮助你在Visual Studio 2022中使用gRPC和C++。文件生成的源代码,你可以编写服务器和客户端的实现。

2023-08-24 10:33:59 238

原创 C++ Windows API IsDebuggerPresent的作用

当你在没有附加调试器的情况下运行此程序时,它将输出 “Debugger is not attached.”。例如,恶意软件可能使用这个函数来检测其自身是否被安全研究人员调试,如果是,则可能采取一些措施来干扰调试或直接结束执行。是 Windows API 中的一个函数,它用于检测当前运行的程序是否正在被调试。当程序被如 Visual Studio 这样的调试器附加时,此函数会返回。作为安全机制是不可靠的,因为经验丰富的逆向工程师知道如何绕过这样的检查。

2023-08-23 15:58:02 82

原创 PyQt PySide6 QMessageBox使用教程

是一个 Python 绑定到 Qt6 库的库,允许你在 Python 中创建 Qt6 应用程序。是一个提供模式对话框,用于显示消息、询问问题或获取简单的输入的类。还有许多其他功能和配置选项。你可以根据需要定制消息框的外观和行为。这只是一个基本介绍,

2023-08-22 20:45:19 272 1

原创 C++编译出现 error: C2872: “byte”: 不明确的符号

方法(2)在使用using namespace std;之前,添加#include <windows.h>我使用方法1可解决,就是在代码里不要使用using namespace std;在编译cpr库时,需要使用用C++ 17, 出现了编译错误。error: C2872: “byte”: 不明确的符号。方法(1)不使用using namespace std;

2023-08-22 14:57:03 53

原创 Qt编译出现error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known

如果有其它类型出现类似的错误,使用Q_DECLARE_METATYPE来声明即可。

2023-08-17 23:18:10 41

原创 C++字符串转换总结

以下C++字符串转换均在unicode编码下进行。

2023-08-17 23:10:05 176

原创 C++ OpenSSL 3.0.8 AES加解密

如果使用OpenSSL 1.1.1 sdk编译则没有上述错误,使用3.0以上的openssl sdk就会报错,那是因为3.0的不兼容1.0的sdk。如果你想继续使用已弃用的函数,并且不想更改代码,可以考虑禁用特定的编译警告。在 Visual Studio 中,你可以使用。来禁用这个特定的警告。请注意,这并不是一个推荐的解决方案,因为它可能会掩盖潜在的问题。最佳的解决方案通常是更新你的代码,以使用新的API。这样可以确保你的代码与最新的库版本兼容,并且可以从新版本中获得的安全和性能改进中受益。

2023-08-17 22:23:51 790

原创 Linux POSIX C/C++线程API介绍与代码演示

Linux POSIX API(Application Programming Interface)是一组用于编写可移植的多线程、进程间通信、文件操作等系统级应用程序的标准接口。它遵循POSIX(Portable Operating System Interface for Unix)标准,POSIX是一组定义了操作系统接口的标准,旨在提高可移植性和互操作性。Linux POSIX API提供了许多函数和数据类型,用于创建和管理线程、进程间通信、文件操作、信号处理、互斥锁、条件变量等。

2023-08-10 22:17:35 225

原创 Linux C++ 网络编程基础(2) : TCP多线程一个server对应多个client

Linux POSIX线程库提供了一组函数来创建、管理和同步线程。:创建一个新的线程。return 0;:等待一个线程的结束。return 0;:初始化一个互斥锁。return 0;:初始化一个条件变量。return 0;

2023-08-10 21:48:47 1071

原创 VS2022编译OBS29.1之后的版本

执行cmake生成sln时, 会自动下载deps, 大概15分钟(需要有合理的网络环境, 不然部分依赖会下载失败) .在OBS 29.1之前, windows系统编译时需要手动下载deps依赖库文件, 具体可参考我的另一篇博客,4 双击生成的sln文件, x64在目录build_x64\obs-studio.sln。编译环境win11, vs2022, Qt5.15.2, 建议用Qt6.2 打开obs项目目录, 执行。

2023-08-07 21:34:31 254

原创 后端开发, 接口幂等性是什么意思

如果一个接口不是幂等的,那么重复执行同样的请求可能会导致不同的结果,甚至引发意外的行为。可以使用数据库或缓存来记录已处理的标识符。如果标识符已经存在于记录中,说明该请求已经被处理过,直接返回之前的处理结果即可,从而实现幂等性。处理完请求后,将新的资源状态与之前的状态进行对比,如果相同,则说明请求未改变资源状态,返回成功;在后续的相同请求到达时,先检查 Token 是否已经存在,如果存在,直接返回之前的处理结果,实现幂等性。在后端开发中,接口的幂等性是指同一个请求的多次执行所产生的效果与执行一次的效果相同。

2023-08-07 21:17:09 694

原创 C++网络编程Reactor模式介绍

但是,由于所有的事件都在一个线程中处理,如果某个事件处理时间过长,会阻塞其他事件的处理,因此在设计Handler时需要特别注意。Synchronous Event Demultiplexer:这是一个系统级别的组件,负责等待事件的发生。当事件发生时,它会通知Reactor。Handlers:这些是具体的事件处理器,它们定义了如何响应特定的事件。它会不断地检查是否有新的事件发生,如果有,就调用相应的事件处理器。Handler处理完事件后,返回控制权给Reactor,Reactor继续等待其他事件的发生。

2023-08-07 18:11:51 145

原创 http get、post、put

这个例子中,我们发送了一个POST请求到"/path",并且我们设置了HTTP头部字段"Content-Type"为"application/x-www-form-urlencoded",然后我们发送了两个字段"field1"和"field2"。与 GET 不同,POST 请求会把数据和请求一起发送,数据不会附在 URL 上,而是在请求的消息体中。PUT:PUT 方法用于向指定资源位置上传其最新内容,PUT 方法是幂等的,即无论调用一次还是多次,服务器上的结果都是一样的。PUT 方法通常用于更新资源。

2023-08-07 18:08:26 1513

原创 linux epoll介绍与代码演示

当有新的客户端连接时,它会接受这个连接,并将新的socket添加到epoll的监视列表中。epoll是为了解决这个问题而出现的。然后,它创建了一个epoll文件描述符,并将服务器的socket添加到epoll的监视列表中。poll是一种比较早的技术,它的工作方式是轮询所有的文件描述符,看哪些文件描述符准备好了I/O操作。这种方式的缺点是,当文件描述符的数量很大时,轮询的开销会很大。这只是一个非常基础的示例,实际的网络编程可能会涉及到更复杂的情况,比如处理客户端断开连接的情况,或者使用非阻塞IO等。

2023-08-07 17:42:25 407

原创 Linux C++网络编程基础(1):TCP服务端与客户端的实现

这两段代码分别实现了一个简单的服务器和客户端。服务器创建一个socket,绑定到一个特定的端口,并开始监听这个端口。当一个客户端连接到这个端口时,服务器接收客户端发送的消息,然后向客户端发送一个响应。在Linux环境下,我们可以使用socket编程来实现网络通信。下面是一个简单的C++版本的客户端和服务端的示例代码。这只是一个非常基础的示例,实际的网络编程可能会涉及到更复杂的情况,比如多线程或者非阻塞IO等。客户端创建一个socket,连接到服务器的特定端口,发送一个消息,然后等待服务器的响应。

2023-08-07 16:48:07 925

原创 C++内存序介绍与代码演示

例如,x86架构的CPU在硬件层面上为某些操作提供了较强的内存序保证,这可能意味着在这些平台上,某些内存序的操作可能没有额外的性能开销。std::memory_order_acq_rel:这是acquire和release的结合,既保证了在它之前的读或者写操作不会被重排序到它之后,也保证了在它之后的读或者写操作不会被重排序到它之前。总的来说,虽然C++内存序的语义在不同的操作系统上是一致的,但在实践中,由于底层硬件和编译器的差异,可能会有不同的性能表现和实现细节。

2023-08-07 16:39:02 86

原创 C++实现内存池

这个内存池使用一个vector来存储内存块,每个内存块的大小为blockSize。allocate函数会从freeList中取出一个内存块并返回,如果freeList为空,则会调用expandPool函数来扩展内存池。在示例中,我们使用内存池来分配和释放int类型的内存块。首先,我们分配一个内存块并将其赋值为42,然后再分配一个内存块并将其赋值为99。最后,我们释放这两个内存块。请注意,这只是一个简单的内存池实现示例,实际的内存池可能需要更复杂的管理和分配策略,以及对内存对齐和内存泄漏等问题的处理。

2023-08-07 16:21:27 65

Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送

1、可以使用vs2019/vs2017 Qt进行编译 2、源码说明链接:https://mingshiqiang.blog.csdn.net/article/details/80733737

2022-02-22

c++ PImpl实现机制

**PIMPL** ,即Private Implementation,一般称之为类的私有化实现,PImpl主要有两个作用; (1)它让声明和实现进行解耦,在项目开发时,如果很多文件引用了该头文件,如果头文件改变了一些实现,那么在编译时,所有引用的文件也得重新编译一次,增加了c++程序的编译时间, 如果把实现用一个指针进行声明,改变实现的代码,只会关联一次,降低了耦合度,可以减少编译时间。 (2)Pimpl,也可以称之为pointer to implementation, 指向实现的指针,可以用来对“类的接口与实现”进行解耦,比如在sdk开发时,可以用这个技巧来避免在头文件中暴露私有细节,使sdk接口与实现保持完全分离。

2021-09-15

很全的 Qt qss

这是一个Qt第三方样式表,下载后,可以直接加到项目中使用。不知道怎么用的,可以关注我的Qt专栏。使用链接:https://mingshiqiang.blog.csdn.net/article/details/108860180

2020-09-29

jsoncpp_sdk_x64.rar

vs2017编译的jsoncpp sdk, 包含Debug和Release版本dll, lib , include,可以和其它sdk一样直接包含到项目中使用,可以去我的博客C++专栏找使用方法。

2020-04-06

ffplay源码架构图.vsdx

我用visio2016画的,把ffplay源码中的各个模块都展现出来了,有兴趣的可以去看看我的博客。

2019-12-08

MusicPlayer.rar

该音乐播放器使用Qt开发,代码用QtCreator编写,下载即可使用,主要用QMediaPlayer的一些功能,可以看我的博客讲解。

2019-11-17

Qt子线程更新数据发到主线程显示.rar

Qt的子线程无法直接更新主UI,需要发送信号到主线程进行更新,我用的QTableWidget展示数据。

2019-08-18

FileDownlod.rar

Qt实现的网络文件下载,用QtCreator可以直接打开编译,运行,我的博客有讲解,可以去看看。

2019-08-05

lua-5.3.4源码

lua5.3.4源码,导入VS2015可以直接编译,想学习分析Lua源码的可以下载,研究。

2019-01-10

中国象棋源码(C++/MFC)

用MFC写的中国象棋游戏,VS2015可以直接编译,有多重AI算法,有兴趣可以研究,全网最好的象棋代码。又不懂的可以看看我的博客,有讲解。

2018-12-24

Win10 Git Bash闪退的解决方案文件

当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

2018-11-07

Halcon12与MFC数字识别详细教程

基于Halcon12的数字识别,识别精确,关于代码的解释,请关注的我的博客,在博客里我做了详细的解释。

2018-07-09

ffmpeg3.2.4_Win32开发库文件

ffmpeg3.2.4_Win32开发库文件,包含头文件,静态库lib, 动态库dll.

2018-06-03

Qt进度条QProgressBar的使用(详细代码)

详细的工程代码与注释,讲解Qt进度条QProgressBar的使用方法,完整的代码。

2018-05-03

支持向量机通俗导论(理解SVM的三层境界)PDF

这应该是全网最全最清晰的SVM学习的资料了,我学了10天,终于了解了,大家可以学学看。PDF文档学会后,可以结合OpenCV的源码看看,相信你们一定有大的收获。

2018-04-13

C# TCP网络通信示例:多人聊天发文件

该资源包含客户端,服务器, 用户注册到数据库(可自行裁剪该功能),通过TCP 实现聊天,发文件,可以多人同时聊天。代码有完整的注释,是完整的项目。

2018-04-02

华为C++/C/java代码规范(完整版)

最新的华为代码规范,适用于C++/C/java,高清带目录,格式标准的代码给自己和维护者都是一种享受,建议程序员多看看。

2018-03-14

C++/OpenCV2.4.9 数字精确识别源码

利用OpenCV的图像处理技术,对图像进行灰度处理,二值分析,降噪,滤波等,识别照片中的数字,完美精确, C++ VS2015代码,有详细的代码注释,完整源码。

2017-11-02

C# Winform数值实时曲线(完整示例)

C#实现显示实时数据,并形成曲线,保存数据,完整的项目代码

2017-07-01

空空如也

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

TA关注的人

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