自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (5)
  • 收藏
  • 关注

原创 【Qt QML】Dialog组件

这个描述指的是一个常见的用户界面元素,即一个临时弹出的窗口(或对话框),它包含一个标题,显示对话框的用途或内容描述,以及一系列标准按钮,如“确定”(Ok)、“取消”(Cancel)、“是”(Yes)或“否”(No)等,用于接收用户的输入或响应。这种对话框通常用于需要用户立即做出选择或提供输入,但不希望中断或替换当前用户界面主要流程的情况。与ApplicationWindow和Page类似,Dialog通常由三个部分组成:标题栏(header)、内容区域(contentItem)和页脚(footer)。

2024-05-28 17:07:30 339

原创 c++对rgb数据进行抽样

以下算法是对rgb数据进行抽样,将数据在内容不变的情况下,降低数据的内存占用,方便应用处理和网络传输。

2024-05-28 09:23:15 269

原创 zstd库数据压缩与解压缩

在今天的博客中,我们将探讨如何在 Visual Studio 2019 中使用 zstd 库进行高效的数据压缩和解压缩。zstd(也称为 Zstandard 或 zstd)是由 Facebook 开发的开源压缩库,提供了非常快速的压缩和解压缩速度,同时还具备高压缩比。

2024-05-27 11:01:08 1256

原创 【Qt QML】ComboBox组件

ComboBox 是一个组合的按钮和弹出列表。它提供了一种以最小的屏幕空间呈现选项列表给用户的方式。ComboBox 使用数据模型填充。数据模型通常是一个 JavaScript 数组、一个 ListModel 或一个整数,但也支持其他类型的数据模型。下面是一个简单的使用方式。

2024-05-07 20:33:59 471

原创 【Qt QML】Qt Quick Scene Graph

当使用QQuickRenderControl时,驱动渲染循环的责任被转移到应用程序。在这种情况下,不会使用内置的渲染循环。相反,由应用程序在适当的时间调用抛光、同步和渲染步骤。可以实现类似上述示例的多线程或非多线程行为。此外,应用程序可能希望结合使用QQuickRenderControl实现并安装自己的QAnimationDriver。这可以完全控制驱动Qt Quick动画,对于不显示在屏幕上的内容特别重要,因为没有呈现帧的操作。这是可选的,默认情况下动画会根据系统定时器前进。

2024-05-07 20:08:25 945 1

原创 【Qt QML】QLibrary加载共享库中的类

QLibrary是一个用于加载动态链接库(或称为共享库)的类。它提供了一种独立于平台的方式来访问库中的功能。在QLibrary中,可以通过构造函数或setFileName()方法设置要加载的库文件名。当加载库文件时,QLibrary会搜索所有平台特定的库位置,除非传入的文件名具有绝对路径。如果传入的文件名具有绝对路径,那么会首先尝试加载该目录。如果该文件找不到,QLibrary会使用不同的平台特定的文件前缀或后缀再次尝试。

2024-05-02 21:39:22 620 1

原创 【Qt QML】用CMake管理Qt工程

CMake是一个开源、跨平台的工具系列,用于构建、测试和打包软件。CMake使用简单的独立配置文件来控制软件编译过程。与许多跨平台系统不同,CMake被设计为与本地构建环境结合使用。下面我们在CMake项目中使用Qt的最基本方法。首先,创建一个基本的控制台应用程序。然后,将该项目扩展为使用Qt Widgets的GUI应用程序。

2024-05-02 14:56:58 913

原创 【Qt QML】Pane组件

Pane(窗格)提供与应用程序样式和主题匹配的背景色。窗格不提供自己的布局,但需要您定位其内容,例如通过创建RowLayout或ColumnLayout。声明为窗格的子项的项自动成为窗格的contentItem的父项。动态创建的项需要显式地添加到contentItem中。

2024-05-01 22:14:11 55

原创 【Qt QML】Frame组件

Frame的子元素的项会自动成为Frame的contentItem的父元素。动态创建的项需要显式地添加到contentItem中。如果在一个框架中只使用一个项目,它将调整大小以适合其包含的项目的隐式大小。这使得它特别适合与布局一起使用。继承自Panel控件。用于在可视框架内布局一组逻辑控件。简单来说就是用来包裹和突出显示其他可视元素。Frame不提供自己的布局,但需要自己对元素位置进行设置和定位,例如通过创建RowLayout或ColumnLayout。

2024-05-01 21:56:48 648

原创 【Qt QML】TabBar组件

Qt Quick中的TabBar提供了一个基于选项卡的导航模型。TabBar由TabButton控件填充,并且可以与任何提供currentIndex属性的布局或容器控件一起使用,例如StackLayout或SwipeView。

2024-04-25 08:24:53 844

原创 【Qt QML】Popup如何置顶

叠加为弹出窗口提供了一个图层,确保弹出窗口显示在其他内容之上,并且当模态或调暗的弹出窗口可见时,背景变暗。覆盖层是覆盖整个窗口的普通Item。它可以作为一个可视的父元素,在场景坐标中定位一个弹出框。

2024-04-23 09:15:33 318

原创 【Qt QML】State组件

State(状态)组件是一组来自默认配置的批处理更改。所有项都有一个默认状态,该状态定义对象和属性值的默认配置。可以通过将State项添加到states属性来定义新的状态,以允许项在不同的配置之间切换。

2024-04-23 09:14:33 302

原创 【Qt QML】QML中定义常量

新建文件Constants.qml。

2024-04-19 10:34:42 243

原创 视频技术笔记-色差分量

因为这样,所以SDTV用的规格将色差信号以“CB”“CR”来称呼,HDTV的话是以“PB”“PR”来称呼。RGB方式将所有的颜色信息作同等的处理,虽然有最高的画质,但由于RGB方式对传输带宽和储存空间的消耗太大,为节省带宽,使用色差方式来传送与记录分量视频是现在的主流。转换过后的颜色信息量被删减了约一半,但由于人眼的特性,使得色差处理过后的影像与原始影像的差异很难被察觉。色差: Pb=0.5389×(B-Y) = -0.1146×R - 0.3854×G + 0.5000×B。

2024-04-19 10:06:58 358

原创 浅压缩、深压缩、双引擎、计算机屏幕编码……何去何从?

缺点之二:浅压缩的码率还是很高,即便本地应用,大规模的应用对核心交换机的压力非常大,接入交换机选型也非常苛刻(系统必须满足极限要求,即每个端口900Mbps,48路的接入交换机,则上行44G,10个10G口都不够,但是往往接入交换机达不到48个千兆线速+4个万兆线速的包交换速度)。器件要求不高,因而成本比较低。所以现阶段看来,分布式在未来5-10年内要充分5G的红利,依托5G生态建立更多精彩的应用,甚至能否跳出显示控制的狭窄应用,无缝融合到指挥、业务流程,实现更大的价值,低码率和画质始终是绕不过去的槛。

2024-02-03 15:37:50 937

原创 【Qt QML】QSettings读写ini配置文件类

QSettings 是 Qt 框架中用于读取和写入应用程序配置信息的类。它提供了一个跨平台的解决方案,可轻松地保存和获取应用程序的设置和状态。QSettings 通常用于保存应用程序的配置信息,如窗口大小、位置、字体设置等。这些信息通常存储在注册表、属性列表文件或 INI 文件中,具体取决于操作系统。在 Windows 系统中,QSettings 通常将数据存储在注册表中;在 Unix 系统中,如果没有标准配置文件,许多应用程序(包括 KDE 应用程序)使用 INI 文本文件。

2024-01-21 13:23:42 727

原创 【C++11/C++17】左值与右值

左值和右值是C++中的两个重要概念,它们涉及到变量的存储位置和生命周期。

2024-01-11 15:05:53 414

原创 【C++11/C++17】std::map高效插入

当元素存在的时候,emplace依然会构造一次带待插入元素,判断不需要插入后,将该元素析构,这样导致的后果是,产生了多余的构造和析构操作。C++17引入了std::try_emplace方法,在参数列表中,把key和value分开,该方法会检测指定的key是否存在,如果存在,什么也不做,不存在,则插入相应的value。此外,C++17为map容器还新增了insert_or_assign方法,让我们无需像之前一样,额外编写先判断是否存在,不存在则插入,存在则更新的代码了。

2023-12-24 22:19:08 737

原创 【C++11/C++17】std::vector按顺序插入

在有序std::vector中插入元素,并保持std::vector元素排序std::vector本身不会对它们的对象进行排序。

2023-12-21 09:48:12 673

原创 【C++11/C++17】std::vector高效删除(O(1))

今天继续讨论一下std::vector的erase方法及其优化策略。我们已经指导从std::vector中间的某个位置删除项需要O(n)时间。这是因为移除一个项所产生的空间必须通过将空间后面的所有项移动到左边来填补。在像这样移动项目时,如果它们非常复杂或着非常大并且包含许多项目,虽然保留它们的顺序但会很损耗性能。如果保持顺序并不重要,我们可以对其进行优化。优化的核心是,如何避免删除元素后,数据的大量或者频繁移动。有了这个前提,我们可以使用这个思路:

2023-12-21 09:47:05 1318

原创 【STL】std::vector的erase方法

当与std::array一起使用时,请注意,它不支持调用擦除的第二步,因为它们没有自动大小处理功能。因为std::remove有效地只移动项目,而不执行实际删除,所以它也可以用于不支持调整大小的数据结构,如数组。在这种情况下,你可能需要考虑使用其他数据结构,如std::deque或std::list,它们提供了更快的删除操作。在C++中,你可以使用std::vector的erase方法来删除元素。C++的std::vector中删除元素,特别是当元素位于vector的中间时。

2023-12-20 11:45:45 1501

原创 【C++11/C++17】STL容器

STL容器连续存储(Contiguous storage)存储对象的最简单方法是将它们紧挨着放在一个大块内存中。这种存储器可以在O(1)时间内以随机访问方式进行访问。std::array最简单的方法是使用std::array,它只是普通c风格数组的包装。它应该总是优于普通的c风格数组,它没有运行时成本,增加了一些易用性和安全性。在创建后具有固定的大小。std::vectorvector在需要类似数组的存储,但大小不同的情况下发挥作用。使用堆中的内存来存储对象。每当新对象被压入超过其

2023-12-20 11:19:36 381

原创 【C++17】结构化绑定

C++17带来了一个新特性,它结合了语法糖和自动类型推断:结构化绑定。这有助于将对、元组和结构体中的值赋给单独的变量。在其他编程语言中,这也称为解包

2023-12-18 15:47:13 628

原创 【项目管理】WBS

工作分解结构(Work Breakdown Structure, WBS):以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。

2023-12-18 11:37:47 359

原创 【Qt QML】动画模拟下雪

【代码】【QML】动画模拟下雪。

2023-12-17 09:00:00 538

原创 【Qt QML】TextArea

TextArea也是一个多行文本编辑器。TextArea相比texttedit,增加了占位符文本,并添加了样式定义。

2023-12-16 15:38:17 760

原创 【Qt QML】TextEdit

设置内容周围内边距的填充。的值为0,这意味着焦点移动的距离是固定的,通常与文本输入框的宽度或高度有关。可以显示多行可编辑的格式化文。默认是无边框的,可以和父控件完美融合。组件中文本周围的边距,单位是像素。来镜像应用程序布局时,文本的水平对齐方式也会被镜像,但。时,焦点会自动移动到该组件,允许开始输入文本。组件宽度和高度内的水平和垂直对齐方式。制表位之间的默认距离。属性控制文本的水平对齐方式。属性控制文本的垂直对齐方式。属性来自定义焦点移动的距离。组件边界之间的空间大小。用于控制文本的换行行为。

2023-12-16 10:54:00 895

原创 【Qt QML】TextField

如果你用自定义项替换背景项,你也应该考虑为它提供一个合理的隐式大小(除非它是一个像Image这样有自己隐式大小的项)。TextField 是一个单行文本编辑器,它继承自TextInput,具备TextInput的所有功能,同时扩展了 TextInput 并增加了占位符文本功能和装饰选项。: 焦点改变是因为用户执行了反Tab操作,可能是通过Shift+Tab或其他类似的组合键。: 焦点改变是因为应用程序打开或关闭了一个弹出窗口,该窗口抢夺或释放了键盘焦点。: 焦点改变是因为用户输入了一个标签的快捷键。

2023-12-15 15:10:23 985

原创 【Qt QML】TextInput

但由于字形的水平度量是没有暗示的,文本的布局将可扩展到更高密度的设备(如打印机),而不会影响诸如换行之类的细节。文本将被修改以优化目标设备上的易读性,但由于指标将取决于文本的目标大小,字形、断行和其他排版细节的位置将无法缩放,这意味着文本布局可能在具有不同像素密度的设备上看起来不同。例如:如果topPadding和bottomPadding设置为10,但是TextInput的高度仅设置为20,则文本将没有足够的垂直空间来呈现,会被剪切显示。文本布局将在排版上准确,使用与使用相同的指标,例如打印时。

2023-12-14 20:41:55 1917

原创 【Qt QML入门】Button组件

Button表示一个推按钮控件,用户可以按下或单击它。

2023-12-14 10:51:47 1068

原创 【Qt QML】Image组件

高度设置时,图像将按比例缩小以适应指定的大小(除非使用了PreserveAspectCrop或PreserveAspectFit,否则它将按比例缩小以匹配裁剪/拟合的最佳大小),保持图像的宽高比。保存了实际绘制的图像的大小。JPEG),则加载的图像将不大于此属性指定的大小。还有一点需要注意,Image被加载成功后,会在内部被缓存和共享,因此如果几个Image项有相同的源,则只会加载图像的一个副本。与缩放图像绘制的宽度和高度属性不同,此属性为加载的图像设置存储的最大像素数,以便大型图像不会使用不必要的内存。

2023-12-13 21:13:46 1257

原创 linux内核组件拓扑

在处理收到的网络数据包时,数据包的接收是异步事件。Linux与其他操作系统不同,几乎所有的操作都基于文件系统接口的处理,如设备驱动程序可以按文件方式访问设备,通过/proc文件系统可以访问Linux内核的数据和参数,这两个功能在调试时非常有效。在所有的操作系统中,设备驱动程序都是硬件的抽象,通过它可以访问硬件。负责创建、结束进程,管理内核的活动,如软件中断、tasklet等,管理进程间通信,如消息(message)、管道(pipe)等,实现进程调度(schedule)。

2023-12-12 20:28:01 391

原创 UDP协议

UDP没有TCP的接收确认、窗口等机制,因此在收发数据之前也不需要交换控制信息,也就是说不需要建立和断开连接的步骤,只要在从应用程序获取的数据前面加上UDP头部,然后交给IP进行发送就可以了。接收也很简单,只要根据IP头部中的接收方和发送方IP地址,以及UDP头部中的接收方和发送方端口号,找到相应的套接字并将数据交给相应的应用程序就可以了。此外,我们发送了数据,对方一般都会给出回复,只要将回复的数据当作接收确认就行了,也不需要专门的接收确认包了。,处于IP协议的上一层。不需要重发的数据用UDP发送更高效。

2023-12-11 16:18:07 366

原创 IP与以太网的转发操作

TCP模块在执行连接、收发、断开等各阶段操作时,都需要委托。两种不同的转发设备,它们在传输网络包时有着各自的分工。传输包的设备,因此我们也可以作如下理解。模块将数据封装成包发送给通信对象。传输包的设备,而路由器是按照。实际上,集线器是按照。

2023-12-11 10:23:13 829

原创 TCP的滑动窗口机制

当网络繁忙时会发生拥塞,ACK号的返回变慢,较短的等待时间会导致频繁的数据重传,导致本就拥塞的网络雪上加霜。如果等待时间过长,包的重传又会出现很大的延迟,也会导致网络的速度变慢。根据服务器物理距离的远近,ACK号的返回时间也会产生很大的波动,而且我们还必须考虑到拥塞带来的影响。当接收操作完成后,接收缓冲区中的控件会被释放出来,再通过TCP头部中的窗口字段将自己能接收的数据量告诉发送方。这样,发送方就不会发送过多的数据,导致超出接收方的处理能力。当接收方的缓冲区溢出后,后面的数据就进不来了,会导致数据丢失。

2023-12-10 12:50:23 1102

原创 TCP工作整体流程

2023-12-10 12:39:23 326

原创 TCP传输数据的确认机制

应用程序也是一样,因为采用TCP传输,即便发生一些错误对方最终也能够收到正确的数据,所以应用程序只管自顾自地发送这些数据就好了。这种情况下,无论如何尝试都是徒劳,因此TCP会在尝试几次重传无效之后强制结束通信,并向应用程序报错。通过这一机制,我们可以确认接收方有没有收到某个包,如果没有收到则重新发送,这样一来,无论网络中发生任何错误,我们都可以发现并采取补救措施(重传网络包)。TCP采用这样的方式确认对方是否收到了数据,在得到对方确认之前,发送过的包都会保存在发送缓冲区中。

2023-12-10 09:00:00 535

原创 TCP/IP协议包结构

TCP/IP协议包结构

2023-12-09 09:49:27 319

原创 TCP对数据的拆分

根据发送缓冲区中的数据拆分情况,当判断需要发送这些数据时,就在每一块数据前面加上TCP头部,并根据套接字中记录的控制信息标记发送方和接收方的端口号,然后交给IP模块来执行数据的发送操作。当发送缓冲区中的数据超过MSS的长度,数据会被以MSS长度为单位进行拆分,拆分出来的数据块被放进单独的网路包中。应用程序的数据一般都比较大,因此TCP会按照网络包的大小对数据进行拆分。

2023-12-09 09:46:11 854

原创 MTU与MSS

相反地,如果时间优先,那么延迟时间会变少,但又会降低网络的效率。当应用程序发送数据的频率不高的时候,可能因为等待MSS长度数据时间太长而造成发送延迟。为此,协议栈内部有一个计时器,当经过一定时间后,就会将网络包发送出去。协议栈收到数据后,会先存放在内部的发送缓冲区中,继续等待应用程序的下一段数据。当应用程序收到的数据长度超过或者接近MSS时再发送出去,就可以避免发送小包问题了。MSS:除去头部之后,一个网络包所能容纳的TCP数据的最大长度。协议栈不关心应用的数据内容,统一认为是一定长度的二进制字节序列。

2023-12-09 09:24:46 466

UML业务类图设计模板

UML业务类图设计模板

2023-12-10

TCP传输数据的整体流程

TCP传输数据的整体流程

2023-12-10

TCP双向传输数据的确认机制

TCP双向传输数据的确认机制

2023-12-10

TCP传输数据的确认机制

TCP传输数据的确认机制

2023-12-10

TCP对传输数据的进行拆分逻辑

TCP对传输数据的进行拆分逻辑

2023-12-10

TCP/IP协议中的MTU与MSS

TCP/IP协议中的MTU与MSS

2023-12-10

Qt基于生产消费者模型异步访问数据库框架(不涉及数据库代码)

Qt基于生产消费者模型异步访问数据库框架(不涉及数据库代码)

2022-08-29

基于C++11模板实现的发布/订阅开发框架读取《雪中悍刀行》

基于C++11模板实现的发布/订阅开发框架读取《雪中悍刀行》

2022-02-26

23种设计模式_C++版_源码示例

懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成 立。道可道,非常道。道不远人,设计模式亦然如此。

2022-02-20

QML程序修改窗口主题

QML程序修改窗口主题

2021-12-17

y4m解析 基于QML渲染.y4m格式2160p文件(yuv420帧数据)

基于QML渲染.y4m格式2160p文件(yuv420帧数据)

2021-12-07

daemonExample.zip

windows下创建主进程的守护进程,vs2015编译

2021-05-28

空空如也

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

TA关注的人

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