自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

草上爬的博客

专注技术,热爱分享,QQ:302877285

  • 博客(727)
  • 资源 (173)
  • 收藏
  • 关注

原创 OpenWrt:让OpenWrt支持USB声卡

本文介绍了Windows、Ubuntu和OpenWrt系统下的声卡测试方法。Windows平台使用CM108免驱USB声卡,通过系统自动识别功能测试硬件状态;Ubuntu需安装ALSA工具包,使用aplay/arecord命令进行音频测试,并介绍了设备配置方法;OpenWrt平台测试步骤也包含在内。文章详细说明了各平台测试的注意事项,如虚拟机环境设置、音频参数指定等,为开发者和用户提供了实用的声卡测试解决方案。

2025-06-13 23:29:05 175

原创 OpenWrt:使用ALSA实现边录边播

ALSA是Linux系统的主流音频架构,包含内核驱动层(alsa-driver)和应用层库(alsa-lib)。在Ubuntu中可通过libasound2-dev包安装,提供aplay等实用工具。示例代码展示了如何通过alsa-lib API实现音频采集和播放功能,编译时需要链接-lasound库。虚拟机使用时需确保声卡设备已连接。OpenWrt平台也支持ALSA,但需注意嵌入式环境的特殊配置。ALSA为Linux音频处理提供了完整的解决方案。

2025-06-07 22:43:07 399 1

原创 C++判断是否包含子字符串

C++判断是否包含子字符串

2025-06-07 09:30:00 119

原创 使用sscanf分割ip地址

使用sscanf分割ip地址

2025-06-02 10:06:22 113 1

原创 Qt实现的水波进度条和温度进度条

本文介绍了两种Qt控件实现方法:水波动画控件和温度进度控件。水波控件通过正弦/余弦函数生成波浪曲线,采用相位偏移实现双波叠加效果,并利用定时器动态更新波浪位置。温度控件采用饼状图展示进度,通过定时器控制高亮圆点移动来指示运行状态,防止用户误判为卡顿。两者都支持自定义颜色、数值范围和边框宽度等属性,并提供了完整的类实现代码,包括绘制逻辑、动画控制和属性设置方法。

2025-06-02 09:20:48 690

原创 使用QCollator对QStringList排序

QCollator是一个支持语言环境的字符串排序工具,提供三种排序策略:设置大小写敏感、忽略标点符号和数字模式。在数字排序场景中,通过setNumericMode(true)可实现按数值排序(如"1"<"100")。对于混合字符串也能灵活处理,可与std::sort配合使用,支持直接传入比较器或lambda表达式两种方式。该工具能有效解决常规排序无法正确处理数字字符串的问题。

2025-05-24 12:14:22 60 1

原创 QTabWidget垂直TabBar的图标和文本水平显示

QTabWidget垂直TabBar的图标和文本水平显示

2025-05-24 11:09:19 484

原创 Qt高分屏自适应

Windows 上的桌面应用程序可以在不同的 DPI 感知模式下运行。这些模式可实现不同的 DPI 缩放行为,并且可以使用不同的坐标空间。有关 DPI 感知的详细信息,请参阅。请务必显式为进程设置默认 DPI 感知模式,以避免意外行为。有两个清单设置可用于指定进程默认 DPI 感知模式:<dpiAwareness> 和 <dpiAware>。<dpiAware> 已在 Windows Vista 中引入,仅允许将进程默认设置设置为系统感知。

2025-03-22 22:48:21 735 1

原创 QGroupBox取消勾选时不禁用子控件

QGroupBox取消勾选时不禁用子控件

2025-03-22 22:27:18 220

原创 Qt基础之四十九:Qt属性系统(Property System)

属性使用的自定义类型需要使用Q_DECLARE_METATYPE()宏进行注册,以便将其值存储在QVariant对象中。这使得它们既适用于在类定义中使用Q_PROPERTY()宏声明的静态属性,也适用于在运行时创建的动态属性。

2025-02-24 23:30:34 324 1

原创 QListView实现文件选择功能

QList实现的文件选择功能很常用,但是最高效的做法是先让左侧的源列表默认排序,然后再进行文件选择,这样在选择操作后,无论是源列表还是目标列表,都能很容易保证原来的顺序。

2025-02-23 21:14:19 281

原创 QTreeView添加网格线

网格线虽然可以用样式表添加,但效果不好。这里重写QTreeView的drawRow函数来实现网格线的绘制需要注意的是,当我们对QTableView/QTreeView/QTableWidget/QTreeWidget某行选中后,会发现某些单元格设置的前景色被覆盖了,比如设置的红色,一旦选中就变成了白色(如下图所示)。这肯定不是我们想要的,需要用自定义委托将其去掉。

2025-02-13 22:52:09 488 1

原创 QTreeView和QTableView单元格添加超链接

QTreeView和QTableView单元格添加超链接的方法类似,本文仅以QTreeView为例。在QTableView仿Excel表头排序和筛选中已经实现了超链接的添加,但是需要借助delegate,这里介绍一种更简单的方式,无需借助delegate。二.实现QHTreeView.hQHTreeView.cppMainWIndow.cpp在QHTreeView中通过带下划线的文本来模拟超链接,当鼠标悬浮在带下划线的文本上时,鼠标指针变为小手形状,在鼠标点击时触发超链接。这种方法的缺点

2025-02-09 22:35:08 445 1

原创 QTableView冻结多列

要实现列冻结,也就是说在拖动水平滚动条的时候,第一列永远显示在窗口上。怎么做到这个效果呢?这个例子给的解决办法很简单,我们只需要把两个视图叠加在一起,上层这个视图只显示第一列,下层的视图是全显示,然后拖动时候我们只需要正常拖动下层视图,上层视图联动即可。可用通过tableView->setFreezeColumns(2);设置要冻结的列数,谁然只是多冻结了几列,还是有许多工作要做的,千万不要对产品的需求轻易说Yes。下面稍作修改,让其支持冻结多列。

2025-02-09 11:29:30 563

原创 Qt之设置QToolBar上的按钮样式

通常给QAction设置icon后,菜单栏的菜单项和工具栏(QToolBar)上对应的按钮会同时显示该icon。这里使用ToolButtonTextUnderIcon,效果如下所示:工具栏按钮会自适应文本宽度,这样会导致两个按钮不一样大,那么如何将按钮设置成一样大呢,并自定义悬浮和点击的背景色?

2025-02-07 23:07:37 792 2

原创 C++笔试题之实现一个定时器

C++面试题之实现一个定时器。1.执行定时任务的时,主线程不阻塞,所以timer必须至少持有一个线程用于执行定时任务2.考虑到timer线程资源的合理利用,一个timer需要能够管理多个定时任务,所以timer要支持增删任务,通过容器储存任务3.当timer空闲时(即没有任务或执行任务的时刻未到),timer中的线程不应该空转来占用资源,可通过条件变量实现4.支持重复任务和非重复任务

2024-11-03 15:16:57 1812 1

原创 Qt优秀开源项目之二十四:EXCEL读写利器QXlsx

QXlsx既可以编译成库,也可以直接引用源码QXlsx-master\QXlsx\QXlsx.pri。QXlsx是基于Qt5/Qt6的Excel文件(*.xlsx)的读写库。此处省略N个例子............................5️⃣ 读所有sheet的数据。3️⃣ 添加sheet。4️⃣ 选择sheet。1️⃣ 读单元格数据。2️⃣ 写单元格数据。7️⃣ 单元格的颜色。

2024-10-19 10:58:36 2410 1

原创 ASIO网络调试助手之四:浅谈QTcpServer性能

网络上有些质疑Qt Network模块性能的声音,本文将从理论和压测两个方面对比ASIO tcp server和QTcpServer在Windows上的性能,最后给出结论。

2024-10-18 00:48:51 1097

原创 Effective C++笔记之二十四:stack overflow

溢出(Stack Overflow)是指程序运行过程中,栈空间被耗尽,导致无法继续分配栈内存的错误。C++程序中,栈用于存储函数调用的局部变量、返回地址、函数参数等。当栈空间耗尽时,会引发栈溢出,通常导致程序崩溃。如果用的是Visual Studio,报错弹窗如下图所示。如果用的是其他IDE,比如所Qt Creator,直接crash了,无任何提示。通常的现象就是调用了一个函数,然后就崩了,注释调这个函数,一切正常。

2024-10-11 00:01:39 2406

原创 Qt5.15.2静态编译 MinGW with static OpenSSL

Qt5.15.2静态编译 MinGW with static OpenSSL

2024-10-10 01:26:08 1484

原创 Qt之TCP收发图片的例子

Qt之TCP收发图片的例子

2024-10-06 17:35:31 1711

原创 Qt基础之四十八:按钮为何会有点击效果

按钮为何会有点击效果?Qt窗口绘制原理;QPushButton绘制原理。

2024-10-03 17:28:12 1559

原创 C++之分割字符串的两种方式

C++之分割字符串的两种方式。

2024-09-26 22:03:47 1514 1

原创 Qt基础之四十七:管理员权限

在Windows系统中,以管理员身份运行的意思是,用系统管理最高权限运行程序。一般来说,只有当某些操作涉及系统保护区域时,才会需要用户授权管理员运行。如此一来,程序、命令在运行过程中,就有了足够权限,更改系统设置或注册表。

2024-09-25 23:38:47 2394

原创 Qt之开机自启动

Qt之开机启动,支持设置开机启动和取消开机启动

2024-09-25 08:04:30 1557

原创 Qt优秀开源项目之二十三:QSimpleUpdater

QSimpleUpdater是开源的自动升级模块,用于检测、下载和安装更新。QSimpleUpdater目前Star不多(911个),但已在很多开源项目看到起身影,比如。

2024-09-17 22:08:12 3172 2

原创 Effective C++笔记之二十三:非void函数不写return

Qt Creator查看汇编的步骤如下上图是g++编译器下的汇编eax就是main()函数的返回值如果删掉return 0;可以发现编译器还是把eax的值设为了0,由此可见,即使在main函数中不写return 0,编译器还是会默认添加个return 0。eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。

2024-09-17 12:27:04 2086

原创 Effective C++笔记之二十二:C++临时变量的析构

这行语句结束时这个变量就被析构了,指针c_str()指向的内存也被回收,所以下面使用的c_str()指向的内存已经被释放了,所以无法输出我的博客网址。预期输出:https://blog.csdn.net/caoshangpa,但实际上无论是VC++还是g++编译器下,输出都是乱码。但是把字符串改短点,比如改成“CSDN”,VC++编译器下输出为空,但在g++编译器下,是能正常输出的。因此这个问题非常隐蔽,不仅与编译器相关,还和临时变量的具体内容相关,一旦发生,很难定位。根据上面的分析,这些都是存在问题的。

2024-09-15 08:50:43 1323

原创 ASIO网络调试助手之三:ASIO网络编程注意事项

之前用过uv-cpp,和ASIO一样, 也支持异步机制,因此ASIO用起来还是比较顺手的,下面是个人总结的四点注意事项。

2024-09-14 22:35:53 2145

原创 ASIO网络调试助手之二:网络通信原理

网络调试助手是构建于网络套接字(Socket)组件之上的通信,而Socket本质上是对TCP/IP协议栈模型的封装。要熟练使用网络调试助手,就必须理解网络调试助手的通信原理,也就是要理解Socket以及TCP/IP协议的通信机制。

2024-09-08 22:18:31 2606 1

原创 C++之格式化日期时间为字符串(精确到毫秒)

C++11中提供了获取时间的chrono库,但是格式化显示太方便;C++11还提供了格式化时间iomanip库,通过其put_time方法可以格式化时间到秒,要显示毫秒,就需要自己处理了。

2024-09-08 19:59:12 1893

原创 ASIO网络调试助手之一:简介

多年前,写过几篇的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。开发环境:Win10支持协议:独立的Asio()只包含了头文件,不依赖Boost,使用时只需定义ASIO_STANDALONE,并将Asio的目录添加到编译系统的include path。Asio现在支持C++11/14/17/20,源码里提供了各个C++版本的examples。

2024-09-08 18:41:58 1273

原创 C++面试题之判断一个变量是不是指针

C++面试题之判断一个变量是不是指针

2024-07-20 01:23:32 1462 1

原创 QTextEidt或QPlainTextEdit高亮光标所在行

QTextEidt或QPlainTextEdit高亮光标所在行。

2024-07-19 00:02:38 1092 1

原创 QTreeView和QTableView设置单元格边距

QTreeView和QTableView设置单元格边距

2024-07-14 19:59:43 1356 2

原创 QTableView仿Excel表头排序和筛选

QTableview仿Excel表头排序和筛选:Excel功能非常强大。不仅支持内容排序和筛选,还支持颜色的排序和筛选,而且还支持设置多种过滤条件。本文只仿最常用的内容排序和内容单过滤条件的筛选

2024-07-14 19:14:42 2049 17

原创 Effective C++笔记之二十一:One Definition Rule(ODR)

其实这是C++普遍存在的问题,在.h里面定义了一个class或者template等东东,这个头文件被include到多个cpp里,在这些cpp里原样展开,编译器在链接的时候,就会看到多个重复的定义,于是C++规定了ODR(One Definition Rule),简而言之:"看到这种重复定义的类,且这些类的代码又长得一模一样,编译器就随便选一个用就行了"。结合前面的现象,在Release模式下,内联真正发生,函数在调用处展开,所以能得到正确结果,尽管如此,由于内联的非强制性,代码这样写依然是有隐患的。

2024-07-10 00:26:43 2500 3

原创 QTreeView第一列自适应

通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第一列的宽度能自动缩放,第二列和第三列的宽度保存不变,而且要支持鼠标拖动调整列宽。

2024-06-30 07:25:01 1671 2

原创 QListView、QTableView或QTreeView截取滚动区域(截长图)

QListView、QTableView或QTreeView截取滚动区域(截长图)本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。

2024-06-23 17:59:03 1340 1

原创 QTreeView双击任意列展开

重点是如何通过其他列的QModelIndex(假设为index),获取第一列的QModelIndex(假设为firstColumnIndex)。这里要注意index函数的第三个参数,第三个参数为父index,因为通过在tree中仅通过row和column无法确定目标index。下面是一个只有一列的tree,注释中为每行的row和column此时,model->index(0, 0);只会定位到node0,而不是node1-0、 node2-0或node2-1-0。

2024-06-23 14:52:46 1474

VC实现单文档切分窗口

VC实现单文档切分窗口

2016-12-03

Qt动画效果展示

展示了Qt动画的使用,效果非常炫 详见博客:http://blog.csdn.net/caoshangpa/article/details/53964789

2017-01-01

Boost.Asio C++ Network Programming(高清,带书签,可复制)

Boost.Asio C++ Network Programming(高清,带书签,可复制)

2018-01-29

Qt之调用zlib

Qt调用zlib的例子,详见博文:http://blog.csdn.net/caoshangpa/article/details/78528930

2017-11-14

c++获取OpengL版本号的两种方法

源码,没啥说的

2017-06-02

Qt实现窗体缩放

用Qt实现的跨平台窗体缩放,详见博客:http://blog.csdn.net/caoshangpa/article/details/78543165

2017-11-15

VC通过DirectShow进行视频预览和捕获

VC通过DirectShow进行视频预览和捕获

2016-12-03

Qt Quick实现九宫格锁屏视图

九宫格划指锁屏视图 Lisence: MIT, 请保留本文档说明 Author: surfsky.cnblogs.com 2015-02

2017-11-14

Qt OpenGL+Graphics-View

示例+源码,QtOpenGL以及Graphics-View框架整合的例子

2017-11-14

20种数据结构和算法的C++实现

20种数据结构和算法的C++实现,详见博客:http://blog.csdn.net/caoshangpa/article/details/78557334

2017-11-17

WebRTC学习之四:最简单的语音聊天

使用WebRTC实现了最简单的语言聊天 详见博客:http://blog.csdn.net/caoshangpa/article/details/53889057

2017-01-10

Qt高仿QQ截图

使用Qt高仿QQ截图,实现了画图形、画线、画刷、写文字、重做等功能

2017-11-27

Qt之绘制灵动的小鱼

使用Qt绘制的小鱼,用到了很多算法,包括贝塞尔曲线等,非常值得学习借鉴

2018-01-14

QML实现图像处理,包括浮雕、锐化等效果

使用 Qt Quick 实现的图像处理实例,支持黑白、锐化、底片、柔化、灰度、浮雕等特效。展示 Qt 中 QML 与 C++ 混合编程技术、多线程、自定义事件等关键技术。 原作者:foruok

2017-11-14

Qt下用QSplitter实现滑动窗口

Qt下用QSplitter实现滑动窗口,详见博客:http://blog.csdn.net/caoshangpa/article/details/78549788

2017-11-16

仿360鼠标拖动图片切换效果

博客中发现有作者写的仿360的代码,觉得其中图片滑动的效果很有意思,特提取其中的代码。并加上类似mac的画面移动的动画效果。

2017-11-15

WebRTC学习之三:录音和播放

使用WebRTC C++实现的录音与播放功能,界面用的Qt。 详见博客:http://blog.csdn.net/caoshangpa/article/details/53446916

2016-12-26

Qt插件调用实例

实例讲解Qt如何实现插件的调用,详见博客:http://blog.csdn.net/caoshangpa/article/details/78506322

2017-11-11

程序员必读之软件架构 高清pdf 带书签

程序员必读之软件架构 高清pdf 带书签

2017-07-16

VC局域网象棋对战(毕业设计)

VC局域网象棋对战(毕业设计),含设计文档

2016-12-03

Qt之TCP收发图片的例子 详见博客:https://blog.csdn.net/caoshangpa/article/deta

Qt之TCP收发图片的例子 详见博客:https://blog.csdn.net/caoshangpa/article/deta

2024-10-06

Qt通过UDP传图片 实现自定义分包和组包

在IT领域,网络通信是应用程序开发中的重要环节,特别是在实时性要求高的场景,如游戏、视频通话等。UDP(User Datagram Protocol,用户数据报协议)因其无连接、快速传输的特性,常被用来处理这些需求。Qt是一个跨平台的C++图形用户界面库,它也提供了丰富的网络编程接口,包括对UDP的支持。本篇文章将深入探讨如何在Qt中通过UDP协议发送和接收图片,同时实现自定义的分包和组包策略。 理解UDP的基础知识至关重要。UDP是一种无连接的传输层协议,这意味着在发送数据之前不需要建立连接,因此它比TCP(Transmission Control Protocol)更快,但不保证数据的顺序或可靠性。在传输大块数据,如图片时,由于UDP的数据包大小限制(通常为64KB),我们需要将图片数据分包,然后在接收端重新组合成原始图像。 在Qt中,可以使用`QTcpSocket`类进行TCP通信,而使用`QUdpSocket`类进行UDP通信。对于UDP图片传输,我们需要实现以下步骤: 1. **图片数据预处理**:我们需要将图片数据转换成适合UDP传输的格式,例如,可以将图片转换成字节

2024-10-06

Qt国际化(I18N)

国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),说起Qt,就不能避开国际化,国际化步骤: 如果Qt程序中有QObject::tr()包裹的字符串,对这个应用程序的翻译主要包含三步: ①.运行lupdate工具从C++源代码中提取要翻译的文本,这时会生成一个.ts文件,这个文件是XML格式的; ②.在Qt Linguist中打开.ts文件,并完成翻译工作; ③.运行lrelease工具从.ts文件中获得.qm文件,它是一个二进制文件。这里的.ts文件是供翻译人员使用的,而在程序运行时只需要使用.qm文件,这两个文件都是与平台无关的。 详见博客:https://blog.csdn.net/caoshangpa/article/details/135319397

2023-12-31

Qt之实现遮罩窗口,实现了窗口遮罩效果

参考链接:https://blog.csdn.net/caoshangpa/article/details/53053409

2022-07-24

Qt调用OpenGL API实现彩色旋转立方体

详见博客:https://blog.csdn.net/caoshangpa/article/details/80258907 源码中包含了glu和glut等库

2018-05-09

Qt+libVLC+QWidget渲染

从libVLC中抽帧,然后用QWidget渲染,详见博客:https://blog.csdn.net/caoshangpa/article/details/114171203

2021-02-27

Qt5版Nehe OpenGL教程1-5

Qt5版Nehe OpenGL教程,第一课到第五课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80270855

2018-05-14

Qt5版NeHe OpenGL教程6-10

Qt5版Nehe OpenGL教程,第六课到第十课,详见博客:https://blog.csdn.net/caoshangpa/article/details/80323712

2018-05-17

Effective Modern C++ 英文原版(带书签)

Effective Modern C++ 英文原版(带书签),稍微有点英语基础就可以看懂,C++11和C++14学习必备

2018-01-27

TestUI.rar

Qt换肤详见博客: https://blog.csdn.net/caoshangpa/article/details/51476644 https://blog.csdn.net/caoshangpa/article/details/51527121

2021-02-09

QHOpenGLPlayer.rar

使用QOpenGLWidget渲染yuv420p,详见博客:https://blog.csdn.net/caoshangpa/article/details/112448207

2021-01-10

Qt调用libVLC实现播放器

可以播放本地文件和网络url,详见博客:https://blog.csdn.net/caoshangpa/article/details/114156273

2021-02-26

Boost.Asio C++ Network Programming随书源码

Boost.Asio C++ Network Programming随书源码,书的下载链接:http://download.csdn.net/download/caoshangpa/10229882

2018-01-29

Qt使用SDL2\D3D渲染YUV420p

Qt使用SDL2\D3D渲染YUV420p

2021-01-09

Qt4版NeHe OpenGL教程 源码

Qt4版NeHe OpenGL教程 源码,NeHe的教程虽然时间久远,但是仍然是入门的好教程,至少对三维概念的了解很有帮助。

2018-05-12

MyTcpClient

Qt实现的TCP客户端,用于和State Thread库的Server例子进行调试。详见博客:http://blog.csdn.net/caoshangpa/article/details/79582873

2018-03-16

QHVlcPlayer.rar

Qt+libVLC,使用QWidget和QOpenGLWidget两种方式渲染:详见博客https://blog.csdn.net/caoshangpa/article/details/114182802

2021-02-27

基于Qt和SDL2播放PCM

基于Qt和SDL2播放PCM,参考博客:https://blog.csdn.net/caoshangpa/article/details/112226484

2021-01-05

QML实现点赞送礼物效果

Qt5 QML实现,详见博客:https://blog.csdn.net/caoshangpa/article/details/112195530

2021-01-04

串口调试助手

串口调试助手,自己用的,还不错。可以设置16进制发送和接收。

2018-03-16

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

TA关注的人

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