- 博客(55)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注

原创 利用QCamera等实现的摄像头每一帧数据的捕捉(只依赖Qt)
目的:如果只是单纯地显示摄像头拍摄的画面,利用QCamera其实可以很简单地实现,但是如果为了获取摄像头的每一帧数据做进一步处理,而不是仅仅用于显示,在Qt中貌似没有很直接的方法,因此参考了网上一些大神的做法,做了一些整理。 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片...
2018-09-01 14:06:25
9149
25
原创 YUVxxx中的xxx分别代表什么意思?
学习视频编解码,经常会看到 YUV444、YUV422、YUV420 等像素格式。光靠字面意思很难完全理解 444、422、420 分别代表什么采样方式。视频系统的抽样系统中通常用一个三分比值表示:J:a:b(例如4:2:2),形容一个。以上例图仅给出理论上的示例。以及注意图中并没有表明任何色度过滤(防止叠影的措施)。可以看出,YUVxxx其实对应的就是J:a:b。由此进行记忆会方便不少。这个解释中可以明白,这些数字其实有特定的含义。
2024-12-28 23:37:35
242
原创 Qt控件布局与运行效果不一致的问题解决
在 Qt 设计师中对控件进行水平布局,程序放到板子上运行时,发现没有水平对齐的效果。在 Qt 设计师的布局如下:在板子运行的效果如下:可以很明显地看到,QLabel 控件与 QCheckBox 无法水平对齐,影响美观。
2022-12-14 16:45:56
1666
2
原创 datagrip 报错 “The specified database user/password combination is rejected...”的解决方法
环境介绍win10 + MySQL 8.0.26 + datagrip 2021.2.2问题描述本来安装完 datagrip 后可以正常连接本地 MySQL 数据库进行使用。过几天重新开机后打开 datagrip 发现一直弹窗:从图片可以看出来描述的是账户与密码不匹配。于是,进入 CMD 窗口进行测试,通过 mysql -u -root -p,输入密码后,发现可以正常连接,并查询数据库:甚至使用 Navicat for MySQL 进行测试,也发现可以正常连接。问题解决在尝试电脑重启、重新
2022-05-26 22:26:23
10118
5
转载 那些常用的排序算法
参考链接常见的7种排序算法常见排序算法及其对应的时间复杂度和空间复杂度冒泡排序基本思想是两两比较,交换顺序。假设长度为 n 的数组 arr,要按照从小到大排序。采用冒泡排序的具体过程可以描述为:从数组第一个元素开始,到数组最后一个元素为止;相邻的元素进行比较,将元素交换顺序以使其满足左小右大的条件。直至遍历最后一个元素(n-1)为止;进入第二轮遍历;第二轮遍历则只需遍历至倒数第二个元素(n-2)即可;以此类推直到整个数组有序排列;时间复杂度示例代码/* 冒泡排序 */voi
2022-05-13 15:31:09
191
原创 Qt中宏定义的理解(持续更新)
Q_DECL_EXPORT 与 Q_DECL_IMPORT两个宏定义的源码如下:# ifdef Q_OS_WIN# define Q_DECL_EXPORT __declspec(dllexport)# define Q_DECL_IMPORT __declspec(dllimport)# elif defined(QT_VISIBILITY_AVAILABLE)# define Q_DECL_EXPORT __attribute__((visibi
2022-03-16 10:08:10
4941
原创 C++ 中 remove 与 erase 的理解
参考链接vector的remove和erase函数的区别remove() 和 erase()的配合使用和remove()的作用stl中的remove返回的是什么erase 简介vector 中 erase 函数原型如下:iterator erase( const_iterator position);iterator erase( const_iterator first, const_iterator last);用于删除 vector 容器中的一个或者一段
2022-03-07 22:49:25
3046
2
转载 STL中vector的原理
参考链接C++ vector实现原理STL之vector容器用法简介vector 实际上是一个动态数组,预先指向一段连续的已分配好的内存空间。原理通俗地讲,当在 vector 中插入元素且 vector 当前的容量不足以存放时,vector 会重新开辟一段新的内存空间,将原有的数据全部拷贝到新空间后并插入新数据后,再将原有的空间段进行释放。内部原理vector 内部主要实现了 3 个迭代器,分别指向实际头尾、最大容量的尾部;size() 是实际大小,capicity() 是实际容量,
2022-03-01 14:56:49
608
原创 Linux多线程
参考链接:Linux多线程Linux线程详解并发与并行的区别是什么?并行和并发并发(concurrency)在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。同一个时刻只有一个指令运行,但多个进程指令被快速轮换执行,使得宏观上有多个进程被同时执行的效果(针对单核处理器)。并发强调的是一起出发。与并发相对的是不可以一起出发的顺序。并发:无论上一个开始执行的任务是否完成,当前任务都可以开始执行;顺序:上一个开始执行的任务完成
2022-02-12 14:18:26
762
原创 01背包问题
参考链接:总结——01背包问题 (动态规划算法)01背包问题问题描述有 n 件物品,每件物品的重量为 w[i],价值为 c[i]。现有一个可承载的最大重量为 V 的背包,问如何选取物品放入背包,使得背包内的物品的总价值最大。注意:每种物品都只有一件。解析面对每个物品,我们只有两种选择:拿与不拿;声明一个二维数组m[i][j],m[i][j] 表示在面对(注意这里是面对这件物品,不一定要拿它)第 i 件物品,且背包容量为 j 时所能获得的最大价值;当 j < w[i] 时,背包容
2021-11-08 10:53:00
334
原创 编译QtXlsx库
参考链接:Qt之qtxlsx(Excel读取)开源库使用示例QtXlsx的基本使用遇到的问题1. 安装Perl5由于编译QtXlsx库需要用到Perl脚本,所以必须确保有这样的执行环境,否则会报错:15:15:50: 为项目qtxlsx执行步骤 ...15:15:50: 正在启动 "D:\Qt\Qt5.9.8\5.9.8\msvc2015_64\bin\qmake.exe" D:\a_zhm\StudyCode\Excel\QtXlsxWriter-master\src\src.pro -
2021-11-01 15:37:08
1580
1
原创 Windows平台下Qt程序打包为单个可执行的exe程序
参考链接QT封装exe和安装包详解Qt5将可执行程序和动态库打包成可直接运行的程序详解打包程序程序使用Release模式编译完成后,使用Qt安装目录下的windeployqt.exe工具进行打包。步骤将程序拷贝到一个新的目录下,如E:\ini(注意此路径不要带空格);打开cmd控制台程序,进入Qt安装目录下;使用windeployqt.exe程序进行打包,如D:\Qt\Qt5.12.9\5.12.9\mingw73_32\bin>windeployqt.exe E:\ini\I
2021-09-27 14:13:48
708
转载 C/C++内联函数
参考链接:C/C++内联函数C++类里面的哪些成员函数是内联函数?解析内联 inline 是个修饰符,用来修饰体积不大又调用频繁的函数,可以减小函数调用的开销。所谓减小开销,就是在编译时把函数体的代码嵌入进去,达到和宏类似的效果,这样程序在运行到该函数时,就不需要在频繁的跳转中消耗栈的空间。从经验上来说,函数体在10行以内,执行逻辑极其简单(写值,简单的判断和计算等),调用又十分频繁,尤其是一些工程代码中会放在周期循环里一直跑的,联系到其它模块的函数,就可以写成内联函数。格式:inline
2021-09-06 22:52:31
452
原创 QStringList找不到对应的中文字符串的解决方法
问题描述Windows平台下,从一个文件中读取中文字符串,存放至QStringList中,再使用indexof()函数去寻找对应的字符串时,发现无法正确查找到。解决方法在Qt Creator中将代码文件按utf-8编码格式载入,检查文件是否乱码,且无法正常编辑;检查Qt Creator的默认编码格式,如果为system,贼修改为utf-8,保存后重启IDE;重新打开项目,检查是否乱码,如果不会再出现步骤1中的乱码情况,此时重新编译应该可以解决问题。...
2021-09-06 22:48:51
1299
原创 僵尸进程与孤儿进程
参考链接:孤儿进程与僵尸进程[总结]为何要fork()两次来避免产生僵尸进程?基本概念在Unix/Linux系统中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号
2021-06-30 14:25:51
231
1
转载 XML学习
参考链接XML 教程XML简介XML 指可扩展标记语言XML 被设计用来传输和存储数据(HTML 被设计用来显示数据)。什么是 XML?XML 指可扩展标记语言(EXtensible Markup Language);XML 是一种标记语言,很类似 HTML;XML 的设计宗旨是传输数据,而非显示数据;XML 标签没有被预定义。需要自行定义标签;XML 被设计为具有自我描述性。XML 是 W3C 的推荐标准。XML与HTML的主要差异:XML 不是 HTML 的替代;X
2021-06-30 14:17:25
176
转载 Unicode学习
参考链接终于搞懂了 Unicode、UTF-8、UTF-16ASCIIUnicode背景ASCII编码ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符
2021-06-20 16:13:35
827
原创 十六进制转float
工具可通过在线进制转换测试进制转换的数据(注意大小端格式)float用二进制表示参考链接:float类型的二进制表示方法float的二进制表示方式浮点数的二进制表示根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式:V = (-1)^s×M×2^E。(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数;M表示有效数字,大于等于1,小于2;2^E表示指数。IEEE 754规定:对于32位的浮点数,最高的1位是符号位s,接着的8位是阶码E,剩下的2
2021-05-24 21:56:06
13735
原创 QString调用memset后再赋值导致段错误
环境Ubuntu16.04 + Qt 5.7.1问题描述在Qt中声明自定义结构体,该结构体中包含了QString类型。定义结构体后,使用memset对变量进行初始化。再对结构体中的普通类型(如int、bool等)变量进行赋值时,运行正常。当对QString类型变量赋值时,出现段错误。示例代码#include <QCoreApplication>#include <QString>#include <QDebug>struct TestStruct {
2020-12-14 23:07:15
1377
1
原创 初学Python的小功能练手--名片管理
环境Ubuntu 16.04 + python3.5功能描述主要目的在于刚学完Python的基础语法后进行实践,实现一个名片管理系统。通过终端的交互方式,实现“新建名片”、“显示全部”、“查找名片”、“修改/删除名片”的功能。运行效果代码实现分为两个py文件实现。cards_main.py文件主要实现主逻辑;cards_tools.py主要实现对应的功能函数。cards_main.py代码如下:#! /usr/bin/python3import cards_toolswhile Tr
2020-12-06 23:05:36
215
原创 Qt将【十六进制的字符串】与【原数据字符串】互转
环境Ubuntu16.04 + Qt5.7.1目的十六进制的字符串与原始数据的字符串互相转换;例如将“hello world”转为十六进制,则是“68656c6c6f20776f726c64”。转换可以点击这里进行测试。实现QByteArray提供了这种转换方法。//"hello world"的十六进制字符串QString hexString = "68656c6c6f20776f726c64";QByteArray hexByteArray = hexString.toLatin1()
2020-11-26 22:59:59
1947
原创 Qt中自定义结构体、枚举型做信号参数传递
参考链接如何在QT信号和插槽中使用枚举Qt出现QObject::connect: Cannot queue arguments of type '******'的解决方法;问题当自定义结构体、枚举通过信号的参数进行传递的时候,运行以后可能会报错“QObject::connect: Cannot queue arguments of type 'XXX'”,此时信号与槽不一定会生效,但是编译过程是没问题的。因此,这样的问题比较麻烦,应该尽力规避。解决出现这样的问题是由于自定义的结构体、枚举,没
2020-10-19 22:56:45
6977
原创 Qt自定义进度条示例
环境Ubuntu16.04+Qt 5.7.1目的实现自定义图片样式的进度条效果素材准备如效果图所示,可以拆分为2个部分。一是进度条,一是背景图。如进度条图片;背景图代码实现这里的加载进度使用定时器模拟数据,主要重点在于重写QWidget的paintEvent。重写paintEvent函数在构造函数中,成员QPixmap m_progressPixmap先加载好图片:m_progressPixmap.load(":/progressbar.png");void Widget
2020-08-15 10:50:58
3336
4
原创 Qt构造函数的初始化问题
参考链接QT中用父类构造函数初始化子类的成员变量Qt ------ 初始化构造函数参数,parentC++ 构造函数和析构函数是否可以继承?描述在Qt新建继承Qt类的类后,经常会在构造函数看到parent的参数的初始化。如:DialogRangeReference.hclass DialogRangeReference : public QDialog{ Q_OBJECTpublic: explicit DialogRangeReference(QWidget *p
2020-08-10 15:32:06
8814
3
原创 Qt的.pro文件简介
.pro文件是qt项目用于管理代码文件、资源文件等的配置文件。对.pro文件进行qmkae可以生成Makefile文件,通过Makefile进一步编译即可完成对整个项目的编译。.pro文件示例代码#-------------------------------------------------## Project created by QtCreator 2019-01-14T15:47:03##------------------------------------------------
2020-07-05 23:15:10
1235
原创 Qml中的Text控件
环境Ubuntu 16.04 + Qt 5.7.1Qml的Text控件如qt助手中描述的,Text可以显示纯文本和富文本。 例如,可以如下定义具有特定字体和大小的红色文本: Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color: "red" }富文本使用HTML样式的标记定义: Text { text: "<b>H
2020-05-31 00:23:28
4494
1
原创 Ubuntu16.04编译ffmpeg4.2.2
简述Ubuntu16.04下安装ffmpeg很简单,只要使用sudo apt-get install ffmpeg即可。会自动安装ffmpeg,但是这个ffmpeg的版本可能比较旧。使用ffmpge -version可以查看当前系统下所使用ffmpeg的版本号,如:ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developersbuilt with gcc 5.4.0 (Ubuntu 5.4.0-6
2020-05-20 00:10:26
1687
7
原创 软件设计-基础解析02
操作系统基础知识进程管理进程状态转换图用于展现进程的状态,以及各种状态之间的转换。最为常见的有:三态模型和五态模型,其后又提出了七态模型。如图2-2所示为标准的五态模型。从该图可以看出,五态模型中的五态为:执行状态(运行状态)、活跃就绪状态、活跃阻塞状态、挂起就绪状态、挂起阻塞状态。其中前三种状态组成了三态模型。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K...
2019-12-22 00:29:28
346
原创 软件设计-基础解析01
计算机硬件基础数据的表示进制转换:原码、反码、补码、移码 :将最高位用做符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式。反码:正数的反码与原码相同。负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。补码:正数的补码与原码相同。负数的补码是该数的反码加1。移码:移码是对补码的符号位取反得到的一种编码。移码只用于表示浮点数的阶码(即某个小数的乘10的...
2019-12-21 18:32:29
602
原创 QDateTime.time()精确度的“坑”
介绍从Qt的帮助文档中可以看到,QDateTime提供了获取日期和时间的方法等。是QDate和QTime这两个类的组合。可以从当前系统获取时间,也可以进行增减时间,如秒、天、月、年。具体不再赘述,可以直接查看帮助文档。哪里“坑”QDateTime...
2019-12-06 23:42:03
3770
原创 qml实现X秒内计数按钮按下N次
欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体...
2019-11-20 09:53:55
736
原创 移植gdb到arm板
环境PC系统:Ubuntu16.04arm板交叉编译器:arm-linux-gnueabihf-xxx参考链接https://blog.youkuaiyun.com/yhg20090519/article/details/53079499http://blog.chinaunix.net/uid-23381466-id-309369.htmlhttps://blog.youkuaiyun.com/captur...
2019-07-19 15:17:09
1160
原创 qml实现自定义互斥按钮
环境Ubuntu16.04+Qt5.7描述qml中有一个控件RadioButton,单选按钮,即在一个按钮组中只能选中一个;如果想自定义实现按钮的样式的话,则需要使用到一个qml类型:ExclusiveGroup。效果如图,左上方的是使用RadioButton实现的效果,中间的则为自定义按钮互斥效果。实现首先实现自定义按钮的样式,然后再寻找一种方法使这些按钮群产生互斥的效果即可。这...
2019-06-25 15:00:36
3963
5
原创 交叉编译libxml2-2.9.1
描述交叉编译,按照个人的理解,是为了让原本在PC能够正常运行的APP,换了一个执行环境以后依然能够正常执行。一个APP执行起来,势必会依赖到某些动态库,因此,这些库文件也需要进行交叉编译,并放到相应的路径下,才能给APP使用。前提首先,对一个库进行交叉编译,肯定需要一份相应的源码,要清楚使用的是什么编译工具,编译该库时应注意哪些开关项,编译该库是否有依赖项未解决……交叉编译libxml2-...
2019-06-19 14:52:54
1859
原创 qml自定义控件:简易的带图标按钮
在实际需求中,Qt自带的控件显得十分“原始”,因此,想要做出更加好看的样式,常常需要用到自定义控件。效果图环境ubuntu16.04 + Qt5.7.1代码部分
2019-04-22 09:46:39
4768
ClickedTimes.tar.gz
2019-11-19
基于QAbstractVideoSurface实现的摄像头数据帧的捕捉
2018-09-01
QDialogButtonBox的信号触发
2021-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人